Rumah  >  Soal Jawab  >  teks badan

"Bagaimana untuk mendayakan acara onChange MUI Autocomplete untuk mengemas kini nilai"

Saya mendapat pilihan autolengkap daripada API dan ia memperolehnya dengan sempurna dan juga menunjukkan pilihan yang dipilih dikembalikan daripada API tetapi masalah yang saya hadapi ialah tidak kira saya cuba mengalih keluar atau menambah nilai (kategori) ia tidak t Tiada pemadaman atau penambahan akan dibuat.

Kod Kod Demo Dalam Talian

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>
  );
}

Pilih PostsCatsOptions:

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>
  );
}

Saya tidak tahu apa yang saya hilang di sini, mengapa saya tidak boleh menambah atau mengalih keluar teg daripada autolengkap!

P粉649990273P粉649990273400 hari yang lalu684

membalas semua(1)saya akan balas

  • P粉512526720

    P粉5125267202023-09-16 14:02:30

    Kemas kini tatasusunan useEffectkebergantungan anda. https://legacy.reactjs.org/docs/hooks-effect.html []bermaksud hanya dipanggil apabila dipasang

    Ia akan dipanggil pada setiap render

      useEffect(() => {
        const getPost = async () => {
          try {
            setCategories(postInfo[0].categories);
            setSelectedCategories(postInfo[0].categories);
          } catch (err) {}
        };
        getPost();
      }, []); //<--- 改变
    

    balas
    0
  • Batalbalas