![](/img/trans.png)
[英]why state is not updated after button click in setinterval react?
[英]Why state is not updated after button click using hooks?
你能告诉我为什么 state 没有更新吗? 在按钮单击时,我更新了 state 但是当我在 setinterval 上控制台我的 state 时它没有更新,为什么?
这是我的代码
https://codesandbox.io/s/cool-shamir-8lmpo
<button
onClick={() => {
setState({
filters: {
apps: "DDDDDDH",
searchText: "12333",
taskType: "",
dateFrom: "",
dateTo: "",
status: ""
}
});
}}
>
useEffect(() => {
console.log("===============");
setInterval(() => {
console.log(state);
}, 10000);
}, []);
After button click searchText: "12333",
搜索文本应该是 state 中的12333
,但它显示为空 wny?
这里发生的情况是,state 在单击按钮时会发生变化,但要在控制台中渲染它 setInterval 应该被清除。 尝试这个..
useEffect(() => {
console.log("===============");
const interval = setInterval(() => {
console.log(state);
}, 10000);
return () => clearInterval(interval);
}, [state]);
在 React 中设置 state 是异步的,而不是使用间隔,您需要跟踪 state 值useEffect
的依赖数组:
useEffect(() => {
console.log(state);
}, [state]);
为什么在单击按钮时更新 state 时使用 setInterval? 尝试这个。
useEffect(() => {
console.log("===============");
console.log(state);
}, []);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.