带有条件语句的 Redux useSelector

Yuv*_*evy 3 local-storage redux redux-persist react-hooks

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

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

can*_*cse 7

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

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

const data = useSelector(state => {
   if(state.isComponentRendered) {
       return state.data
   }
   return null;
})
Run Code Online (Sandbox Code Playgroud)

  • useSelector 是一个钩子,因此在 if 语句内调用它会违反反应钩子规则。有关更多信息,请参阅 [react 文档](https://reactjs.org/docs/hooks-rules.html)。这样您就可以将上述代码作为组件中应用条件逻辑的唯一位置。 (2认同)