【问题标题】:Can `map` be used in `useSelector`?`map` 可以在`​​useSelector` 中使用吗?
【发布时间】:2021-12-05 13:49:13
【问题描述】:

我正在尝试在useSelector 中使用map。是否有任何限制或良好的编码习惯禁止使用它?

const { items } = useSelector((state: any) => ({
   items: state.appReducer.items.map((item: any) => {
      return { itemID: item.id, itemDescription: item.desc }
   })
}))

【问题讨论】:

  • 这只是另一个功能。
  • 这里用了useEffect在哪里?为什么你认为你不能使用.map()?你有没有尝试过?你有没有发现任何问题?
  • 似乎没有任何问题,并且运行良好。但是我的一位队友建议不应该使用它,我在文档中找不到任何限制。所以我想我会把它贴在这里看看其他人的想法。

标签: reactjs redux react-redux react-hooks


【解决方案1】:

你可以,但是你的选择器有问题。 useSelector 将在 每个 调度操作后运行您的选择器,并在选择器返回新值引用时强制组件重新渲染:

您的选择器总是返回一个新对象,因此它总是会导致该组件重新渲染,即使存储中的相关数据没有改变

我建议通读 Redux 文档的这些部分,以了解如何编写性能更好的选择器:

【讨论】:

    【解决方案2】:

    这是一个 useSelector 而不是 useEffect。

    对于在钩子中使用map,它只是一个执行同步回调函数的循环。所以,这里没什么好担心的。

    【讨论】:

      猜你喜欢
      • 2012-04-29
      • 1970-01-01
      • 2020-11-23
      • 2021-07-13
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      相关资源
      最近更新 更多