reactjs MUI:提供给自动完成的值无效,没有与“[]”匹配的选项

oknrviil  于 2023-04-05  发布在  React
关注(0)|答案(1)|浏览(149)

我正在从服务器获取自动完成选项,它完美地获取,并且它显示了已经从API中选择的选项,但我面临的错误是,每当我尝试删除或删除一个芯片标签时,它不会删除或添加,它会给我这个警告:
MUI:提供给自动完成的值无效。没有一个选项与["jkflnbr.efb","kj.sfbalkdfb"]匹配。您可以使用isOptionEqualToValue属性自定义相等性测试。

自动补全组件代码如下:

export default function SelectPostsCatsOptions({
  selectedCategories,
  setSelectedCategories,
  onChange,
  value
}) {
  console.log("cats are:", Categories);

  return (
    <div>
      <Autocomplete
        id="Categories"
        disablePortal
        multiple
        getOptionLabel={(Categories) => `${Categories.catName}`}
        options={Categories}
        disableGutters
        isOptionEqualToValue={(option, value) =>
          option.catName === value.catName
        }
        renderOption={(props, Categories) => (
          <li {...props} key={Categories.id}>
            {Categories.catName}
          </li>
        )}
        // THE TAGS SELECTED
        renderTags={(value, getTagProps) =>
          value.map((option, index) => (
            <Chip
              key={option.id}
              label={option.catName}
              {...getTagProps({ index })}
            />
          ))
        }
        // END OF THE TAGS SELECTED
        renderInput={(params) => (
          <TextField {...params} placeholder="Categories" />
        )}
        value={value}
        onChange={onChange}
      />
    </div>
  );
}

为了更好地了解这个问题,我做了这个sandbox,请看看它。
我试图在这里做的是编辑(添加或删除所选选项)在自动完成,并重新提交它再次没有任何问题。

0yycz8jy

0yycz8jy1#

我没有看到您报告的错误消息。但是,我无法添加或删除值。
PostInfo组件(pages/PostInfo/postInfo.jsx)重复地将selectedCategories列表重置为useEffect()中调用setSelectedCategories时的初始两个值:

useEffect(() => {
    const getPost = async () => {
        try {
            setCategories(postInfo[0].categories);
            setSelectedCategories(postInfo[0].categories);
            console.log("Setted Categories are:", categories);
        } catch (err) {}
    };
    getPost();
});

如果注解掉对setSelectedCategories(postInfo[0].categories);的调用,则自动完成初始化为空选择。但是,可以逐个选择每个元素,以便将值添加到所选列表中,而无需重置。

相关问题