Je reçois les options de saisie semi-automatique de l'API et elle les obtient parfaitement et affiche également l'option sélectionnée renvoyée par l'API, mais le problème auquel je suis confronté est que peu importe que j'essaie de supprimer ou d'ajouter une valeur (catégorie), ce n'est pas le cas. t Aucune suppression ni aucun ajout ne sera effectué.
Codes de démonstration en ligneandbox
PostInfo.jsx :
import SelectPostsCatsOptions from "../../components/autocomplete/SelectPostsCatsOptions"; import postInfo from "./postInfo.json"; export default function PostInfo() { const [categories, setCategories] = useState([]); const [selectedCategories, setSelectedCategories] = useState([]); useEffect(() => { const getPost = async () => { try { setCategories(postInfo[0].categories); setSelectedCategories(postInfo[0].categories); } catch (err) {} }; getPost(); }); return ( <div className="PostInfoPage"> <> <div> <form> <div> <h3>帖子类别:</h3> <SelectPostsCatsOptions selectedCategories={selectedCategories} setSelectedCategories={setSelectedCategories} onChange={(event, newSelectedCategories) => setSelectedCategories(newSelectedCategories) } value={selectedCategories} /> <p>已选择的类别:</p> </div> </form> </div> </> </div> ); }
Sélectionnez les options PostsCats :
import categories from "./postsCategories.json"; export default function SelectPostsCatsOptions({ selectedCategories, setSelectedCategories, onChange, value }) { return ( <div> <Autocomplete id="categories" disablePortal multiple getOptionLabel={(category) => category.catName} options={categories} disableGutters isOptionEqualToValue={(option, value) => option.catName === value.catName } renderOption={(props, categories) => ( <li {...props} key={categories.id}> {categories.catName} </li> )} renderTags={(value, getTagProps) => value.map((option, index) => ( <Chip key={option.id} label={option.catName} {...getTagProps({ index })} /> )) } renderInput={(params) => ( <TextField {...params} placeholder="类别" /> )} value={value} onChange={onChange} /> </div> ); }
Je ne sais pas ce qui me manque ici, pourquoi je ne peux pas ajouter ou supprimer une balise de la saisie semi-automatique !
Mettez à jour votre tableau
useEffect
dependencies. https://legacy.reactjs.org/docs/hooks-effect.html[]
signifie appelé uniquement lors du montageIl sera appelé à chaque rendu