带有条件语句的 Redux useSelector

Posted

技术标签:

【中文标题】带有条件语句的 Redux useSelector【英文标题】:Redux useSelector with Conditional statement 【发布时间】:2020-08-18 04:44:05 【问题描述】:

我需要获取 Redux 存储数据,但并非总是如此,并且每个组件实例化的数据都不同。 如何在条件语句中使用 useSelector?

只有在渲染某些子组件时,组件才应该从 store 中获取数据,并且每次根据子组件的不同而获取不同的数据。

【问题讨论】:

【参考方案1】:

useSelector 接受一个可以访问 redux 状态的回调作为参数

因此,假设您控制子组件是否在名为 isComponentRendered 的布尔标志中呈现,并且希望在它为 true 时选择数据,否则您可以尝试以下操作:

const data = useSelector(state => 
   if(state.isComponentRendered) 
       return state.data
   
   return null;
)

【讨论】:

我认为这是一种解决方法。将 if 放入 useSelector 是一种好习惯吗? useSelector 是一个钩子,因此在 if 语句中调用它会违反反应钩子规则。更多信息请参考react docs。这样一来,您就可以将上述代码作为组件中唯一应用条件逻辑的地方。

以上是关于带有条件语句的 Redux useSelector的主要内容,如果未能解决你的问题,请参考以下文章

从 getServerSideProps getState() 或 useSelector() 中获取状态值的正确方法?

测试 react-redux useSelector

useSelector 无法从“react-redux”导出

在Redux中使用useSelector和useDispatch

在Redux中使用useSelector和useDispatch

关于使用 Redux 工具包的 `useSelector` 和 `createSelector` 的混淆