从useSelector获取相关值

时间:2020-08-31 16:32:44

标签: react-native redux react-hooks redux-thunk

我有两个钩子:

const dispatch = useDispatch();
const response = useSelector(state => state.responseData);

submit函数:

        const submit = () => {
        
            dispatch(connectToServer(`${BASE_URL}user/signIn`, {
              email: state.email,
              password: state.password
            }, 'post'))
        
            if (response.data.token) <--- this data is 1 step late
              //do smth

我只在渲染JSX元素时看到相关数据,但是无法根据此数据创建函数,该数据要晚1步。

1 个答案:

答案 0 :(得分:1)

这里有三个问题:

  • connectToServer操作可能正在做一些异步工作,因此在下一行运行时不可能已经更新了响应
  • 即使您进行await dispatch(connectToServer()),React可能仍未重新渲染
  • 该回调只能引用定义了该回调时在范围中存在的变量值,即用户单击“提交”按钮之前的呈现。

您将需要:

  • 将响应处理移入thunk本身
  • 让thunk从商店中检索更新的数据并返回/以某种方式使用
  • 将响应令牌处理移至useEffect中,然后等待下一次具有正确数据的重新渲染