ReactJS:函数内部无法识别状态变化?
Posted
技术标签:
【中文标题】ReactJS:函数内部无法识别状态变化?【英文标题】:ReactJS: changes in state not recognized inside functions? 【发布时间】:2022-01-16 20:11:31 【问题描述】:假设我有一个递增计数器的recursive
函数,并且我想根据用户请求重置此计数器。
为此,我声明了一个状态变量,当用户请求重置时该变量将变为“真”。
在我的函数中,我有一个条件来检查这个状态变量是否为真,如果是,它会做什么来重置计时器。
不幸的是,由于无法识别状态更改,因此条件永远不会为真(我使用控制台再次检查以确保)。
当使用像window.resetRequested
这样的全局变量时,或者通过在组件函数之外声明一个变量而不是state
,同样的代码也可以工作。
我觉得这里缺少一些基本的东西(这是有道理的,因为我对网络编程还很陌生)。
let timerValue = currentUser.sessionTimeout;
function createTimer()
if (timerResetRequested === true)
timerValue = currentUser.sessionTimeout;
if (timerValue === 0)
const logOutDate = new Date();
logOut();
else
setTimeout(() =>
timerValue --;
createTimer();
, 1000);
createTimer();
以上几乎就是我想要做的。
感谢您的帮助。
【问题讨论】:
initialTimervalue
在哪里使用?
@Mohit Maroliya B17CS036 谢谢,我在粘贴代码时遇到了一些问题,忘记了这一行。固定。
【参考方案1】:
我不太熟悉
让 timerResetRequested = currentUser.sessionTimeout;
但是,您似乎根本没有与状态交互,这就是您没有看到状态变化的原因。
通常你会声明一个状态值:
const [timeValue, setTimeValue] = useState(0)
然后您可以实现一个函数,例如通过单击按钮来增加该状态值。
然后要重置计时器的值,您将实现一个重置函数,它将状态值重置为零。
我希望这是有道理的?
【讨论】:
真的,我修正了我的帖子,对我造成的混乱表示歉意。这应该是计数器的初始值。以上是关于ReactJS:函数内部无法识别状态变化?的主要内容,如果未能解决你的问题,请参考以下文章