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:函数内部无法识别状态变化?的主要内容,如果未能解决你的问题,请参考以下文章

appdesign中的函数或变量参数无法识别

即使在等待之后,Python 中的 Selenium 也无法识别 DOM 中的变化

<script> 的内部元素无法被文档识别

Java 1.7无法识别夏令时的变化

jQuery无法识别对html的更改[重复]

Shape Drawable 中无法识别颜色状态列表