Wie macht MaterialUI das?
P粉916760429
P粉916760429 2023-09-04 18:17:31
0
1
529

Wenn Sie sich ihre Autocomplete-Komponente ansehen: https://mui.com/material-ui/react-autocomplete/

Das Eingabefeld behält den Fokus, nachdem auf einen Vorschlag im Dropdown-Menü geklickt wurde. Wie machen sie das? In jeder Variante in meiner eigenen Vue-App (ohne Verwendung der Material-Benutzeroberfläche) kann ich das Klickereignis nicht abrufen, um zu verhindern, dass die Eingabe den Fokus verliert.

Ich habe schon lange versucht, dieses Problem zu googeln, habe aber keine eindeutige Lösung gefunden. Die Leute schlugen zum Beispiel Mousedown/Touchstart vor, aber dadurch wird das Scrollen unterbrochen (durch Ziehen des Dropdown-Menüs). MaterialUI hat dieses Problem offenbar nicht und scheint Mousedown nicht zu verwenden.

Ich habe versucht, das Ereignis mit Chrome Dev Tools zu analysieren, aber ich kann nur ein Einzelklick-Ereignis sehen, aber mit dem reduzierten Code ist es schwer zu sagen, was los ist.

Vuetify macht das auch: https://github.com/vuetifyjs/vuetify/blob/master/packages/vuetify/src/components/VAutocomplete/VAutocomplete.ts

Wenn jemand dieses Problem hat, fand ich auch Folgendes hilfreich: https://codepen.io/Pineapple/pen/MWBVqGW

BearbeitenDas mache ich:

    

Dann in app-input-autocomplete:

  

P粉916760429
P粉916760429

Antworte allen (1)
P粉994092873

我通过执行以下操作解决了这个问题,感谢@Claies 提供的想法以及此链接:

https://codepen.io/Pineapple/pen/MWBVqGW

  1. event.preventDefaultonmousedown
  2. @click 结果的行为与正常情况相同(关闭输入)
  3. @click/@focus 输入集open = true
  4. @blur 设置 open = false
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!