Abrufen des Werts in der automatischen Vervollständigung der Reaktionsmaterial-Benutzeroberfläche

Lesezeit: 2 Minuten

Benutzer-Avatar
Morgendämmerung17

Ich beziehe mich auf die Dokumentation von React Material-UI (https://material-ui.com/components/autocomplete/).

Im Democode,

    <Autocomplete
      options={top100Films}
      getOptionLabel={(option: FilmOptionType) => option.title}
      style={{ width: 300 }}
      renderInput={params => (
        <TextField {...params} label="Combo box" variant="outlined" fullWidth />
      )}
    />

Ich verstehe, wie es funktioniert, aber ich bin mir nicht sicher, wie ich den ausgewählten Wert erhalten soll.

Zum Beispiel möchte ich die verwenden onChange prop dazu, damit ich basierend auf der Auswahl einige Aktionen ausführen kann.

Ich habe versucht hinzuzufügen onChange={v => console.log(v)}

aber die v zeigt nichts im Zusammenhang mit dem ausgewählten Wert an.

  • Danke für die Frage. Ich kann nicht glauben, dass das Projekt dies immer noch nicht klar dokumentiert hat!

    – Jay J

    7. Januar 2021 um 20:48 Uhr

Gelöst durch die Verwendung von Passing in the (event, value) zum onChange Requisiten.

<Autocomplete
    onChange={(event, value) => console.log(value)} // prints the selected value
    renderInput={params => (
        <TextField {...params} label="Label" variant="outlined" fullWidth />
    )}
/>

  • Wie füge ich hinzu?

    Benutzer12200634

    8. Januar 2020 um 16:38 Uhr

  • Ich habe stundenlang versucht, diesen Wert richtig zu machen, das ist wunderbar gelöst.

    – Luis Febro

    12. Januar 2020 um 16:32 Uhr

  • Nett! Kleinere Ergänzung, die jemand nützlich finden könnte: Falls der Benutzer einen beliebigen Wert eingibt (wie z freeSolo), da ist kein onChange Veranstaltung. Allerdings gibt es onInputChange und ich verfolge den Wert im Komponentenstatus, damit ich ihn verwenden kann, wenn der Benutzer auf eine Schaltfläche “Hinzufügen” klickt. Ich verwende beide Ereignisse.

    – maaartinus

    20. Juni 2020 um 15:57 Uhr

  • Wie erhalte ich den Index des ausgewählten Elements? Das heißt, wenn ich den ersten auswähle, möchte ich 0 und so weiter

    – Ak01

    14. Oktober 2020 um 6:47 Uhr

  • Wie erhalte ich mehrere Autocomplete-Werte?

    – Steve Angello

    15. Juni 2021 um 17:08 Uhr

Das onChange prop funktioniert auch für mehrere Autocomplete-Werte (@Steve Angello @ShwetaJ). Das value Zurückgegeben wird eine Liste aller ausgewählten Optionen.

const [selectedOptions, setSelectedOptions] = useState([]);

const handleChange = (event, value) => setSelectedOptions(value);

const handleSubmit = () => console.log(selectedOptions);

.
.
.

<Autocomplete
  multiple
  autoHighlight
  id="tags-outlined"
  options={top100Films}
  getOptionLabel={(option) => option.title}
  onChange={handleChange}
  filterSelectedOptions
  renderInput={(params) => (
    <TextField
      {...params}
      variant="standard"
    />
  )}
/>

.
.
.


<button onClick={handleSubmit}>Submit!</button>

Benutzer-Avatar
Saum Charan

Sie können verwenden useState um den empfangenen Wert zu speichern und onChange um den wert zu bekommen:

const [selected, setSelected] = useState([]);


return (
    <Autocomplete
        onChange={(event, value) => setSelected(value)}
        renderInput={(params) => <TextField {...params} label="selected" />}
    />
);

Hier ist TS Arbeitsbeispiel

  const tags = ["perimeter", "Algebra", "equation", "square root"];

  const handleInput = (e: React.SyntheticEvent, value: string[]) => {
    console.log(value);
  };

<Autocomplete
    multiple
    options={tags}
    onChange={handleInput}
    renderTags={(value: readonly string[], getTagProps) =>
    value.map((option: string, index: number) => (
            <Chip
                variant="outlined"
                label={option}
                {...getTagProps({ index })}
             />
            ))
           }
           renderInput={(params) => (
            <TextField
               {...params}
               variant="filled"
               label="Tags"
               placeholder="select question tags"
           />
        )}
   />

============ Ausgang ===============

Geben Sie hier die Bildbeschreibung ein

1063600cookie-checkAbrufen des Werts in der automatischen Vervollständigung der Reaktionsmaterial-Benutzeroberfläche

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy