React-Select 重复和用例

React-Select Duplicates and Use Case

我正在使用 react-select 来帮助为我的网站创建一个过滤系统。但是,我目前遇到了一些问题。

背景:

这是我的内容代码:

export async function getStaticProps() {
  const client = createClient({
    space: process.env.TOKEN,
    accessToken: process.env.TOKEN,
  });

  const res = await client.getEntries({
    content_type: "indieProjects",
  });

  return {
    props: {
      indieProjects: res.items,
    },
  };
}

这是我的 React 代码-select


 <Select
   isMulti
   placeholder="Search..."
   options={indieProjects.map((items) => {
     return { label: items.fields.type, label: items.fields.type };
   })}
            
/>

我的第一个问题是.. 使用此功能时,当我只想显示其中一个时,会弹出重复项。 I have attached an example of the issue 。我知道这与 indieProjects 上的选项和映射有关 - 但我不确定修复它的最佳方法。

我的第二个问题是...一旦创建了 selection,我该如何渲染组件?它将是多个 select,因此用户可以 select 尽可能多的选项。

在此先感谢您的帮助。

如果您需要过滤它们(您这样做是为了去除重复项),我建议记住反应选项 select。

像这样应该可以解决您的第一个问题。对于你的第二个问题,你应该添加一个 onChange 函数并为你的 Select 赋值。我建议为此使用 useState。 (使用状态还可以让您访问他们选择的值)

你似乎还有一个大问题是你使用 labellabel 而不是 labelvalue 作为你的选项对象。

const [state,setState] = useState([])
const options = useMemo(
  () =>
    ([...new Set(indieProjects.map(item=>item.fields.type))]).map((type) => {
      return { label: type, value: type };
    }),
  [indieProjects]
);
return (
 <Select
   isMulti
   onChange={(e)=> e && setState(e)}
   value={state}
   placeholder="Search..."
   options={options}        
/>)

这是一个 link 代码沙箱 Select 渲染。

https://codesandbox.io/s/dreamy-leftpad-l2pzq?file=/src/App.js