如何在React中等待useDispatch值?

时间:2019-11-12 20:10:02

标签: javascript reactjs redux react-redux

在我的React代码库中,我已经集成了Redux usign react-redux,并且正在使用useDispatch钩子从我的视图中调度动作。我只有一个问题,就是在更新商店后我无法访问更新的值。有没有办法让我等待状态更新完成,如await或诸如回调程序之类的东西,我可以在其中执行其他代码?

这是我的代码的样子:

import React from 'react';
import { useDispatch } from "react-redux";
import { setCore } from "../store/global";

// the value from the store is drilled down as props
export default function Home({ instance, core }) {
  const dispatch = useDispatch();

  const onConnect = async () => {
    // core may have some value before but I want to clear
    console.log(core); // prints the old value
    await dispatch(setCore(null));
    console.log(core); // Need to have null here
  }

  return (
    <div>
      <button onClick={onConnect}>Connect</button>
    </div>
  );
}

1 个答案:

答案 0 :(得分:3)

默认情况下,调度是100%同步的。无需等待调度本身。

但是,等待组件的道具更新是一个完全不同的问题。有了该代码,core将永远不会更新,因为onConnect的定义在函数定义时已经捕获了core 的值

您可能希望将逻辑部分移至useEffect()挂钩中,该挂钩将在core的值更改时触发。