【发布时间】:2021-08-11 13:34:18
【问题描述】:
我在我的应用程序中使用 reactjs。 currid_s 最初设置为值 -1 .. 稍后单击按钮后将其设置为 2,但计时器不会在控制台中显示更新的值。为什么? 这是代码
import React, { useState, useEffect } from "react";
export default function App() {
const [currid_s, setcurrid_s] = React.useState(-1);
const handless = () => {
console.log("yess");
setcurrid_s(2);
};
useEffect(() => {
console.log(currid_s, "yes");
getPosts();
const interval = setInterval(() => {
getPosts();
}, 2000);
return () => clearInterval(interval);
}, []);
// const all_pooo=()=>{
// console.log(curr,"dddd")
// }
const getPosts = async () => {
console.log(currid_s);
};
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<button onClick={handless}>gggg</button>
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
这里是代码沙箱的链接 https://codesandbox.io/embed/beautiful-ardinghelli-dg1r4?file=/src/App.js&codemirror=1
【问题讨论】:
-
时间间隔的回调函数对设置定时器时间间隔时有效的
currid_s的值有一个闭包。每当currid_s更新时,您都需要设置一个新的时间间隔。您可以通过在useEffect挂钩的依赖数组中添加currid_s来做到这一点。 -
@Yousaf 但间隔如何影响 currid_s 值?
-
你能在密码框里改一下@Yousaf吗?
-
@TusharShahi 你是什么意思?
setInterval没有改变它的值;它只是调用一个函数,即getPosts,记录currid_s的值。
标签: javascript reactjs react-hooks state