【问题标题】:React-Select Duplicates and Use CaseReact-Select 重复项和用例
【发布时间】:2021-08-11 07:41:41
【问题描述】:

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

背景:

  • 我正在从 Contentful API 检索数据
  • 使用 Next js
  • 使用 getStaticProps

这是我的内容代码:

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 上的选项和映射有关 - 但我不确定修复它的最佳方法。

我的第二个问题是……一旦做出选择,我该如何渲染组件?它将是多选的,因此用户可以选择尽可能多的选项。

提前感谢您的帮助。

【问题讨论】:

  • 每个问题最好单独提出一个问题,因为它对其他有类似问题的人更有帮助。如果为每个问题提供两个单独的答案,则两个问题也很难接受答案。最后,你没有给我们太多关于你做了什么样的调试的信息,例如,网络上发生了什么? stackoverflow.com/help/how-to-ask
  • 同意将这些问题分成两个问题,您会得到更好的答案。可能能够回答第一部分的人会发现,他们可能无法回答第二部分,并且根本懒得回答。

标签: javascript reactjs react-select contentful


【解决方案1】:

如果您需要过滤它们,我建议记住 React select 的选项(您这样做是为了摆脱重复项。)

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

您似乎还有一个大问题是您使用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}        
/>)

这里是带有 Select 渲染的代码沙箱的链接。

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

【讨论】:

  • 非常感谢!从未使用过 useMemo -> 现在将研究它!
  • 对不起,你能解释一下如何让它渲染的第二部分吗?我将如何使用 useState(在这种情况下为 setState)?如果有帮助,我可以创建另一个问题吗? @丹尼尔
  • @FamousLastWords 为您添加了代码沙箱
  • 不确定这是否有效。所以我知道我的问题是,当用户进行搜索时,getStaticProps 将不起作用。然后我需要删除 getstatic 道具。我可以在内容丰富的文档上看到的唯一示例是使用 GraphQL - 我需要学习。
  • @FamousLastWords 搜索内置在 react-select 中吗? (只要你有所有可用的选项)
猜你喜欢
  • 2021-05-26
  • 2018-06-28
  • 1970-01-01
  • 2016-01-28
  • 1970-01-01
  • 2019-09-13
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
相关资源
最近更新 更多