首页 > 解决方案 > React 从 useEffect 中的 Redux 商店获取状态

问题描述

useEffect从钩子中的 Redux 存储获取状态的正确方法是什么?

    useEffect(() => { 
        const user = useSelector(state => state.user);
    });

我正在尝试获取当前状态,useEffect但我无法使用该useSelector调用,因为这会导致错误说明:

Invariant Violation: Hooks can only be called inside the body of a function component.

我想我理解为什么它违反了钩子的主要规则之一。

通过查看Redux 文档上的示例,他们似乎使用selectors.js文件来收集当前状态,但mapStateToProps我理解的这个引用不再需要。

我是否需要创建某种应该在useEffect钩子中调用的“getter”函数?

标签: reactjsreduxreact-redux

解决方案


不要忘记添加user为依赖项,useEffect否则您的效果将不会获得更新的值。

const user = useSelector(state => state.user);
useEffect(() => { 
   // do stuff     
}, [user]);

推荐阅读