作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 React 代码库中,我集成了 Redux usign react-redux
我正在使用 useDispatch
从我的 View 中调度操作的钩子(Hook)。我只有一个问题,我在更新商店后无法访问更新的值。有没有办法让我等待状态更新完成,如 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>
);
}
最佳答案
默认情况下调度是 100% 同步的。无需等待调度本身。
但是,等待组件的 props 更新是一个完全不同的问题。鉴于该代码,core
永远不会更新,因为 onConnect
的定义已经捕获了 core
的值在定义函数时。
您可能希望将该部分逻辑移动到 useEffect()
当 core
的值时触发的钩子(Hook)已经改变。
关于javascript - 如何在 React 中等待 useDispatch 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58825977/
我是一名优秀的程序员,十分优秀!