当前位置: 首页 > 面试题库 >

react.js中的实例v状态变量

尉迟远
2023-03-14
问题内容

在react.js中,将超时引用存储为实例变量(this.timeout)或状态变量(this.state.timeout)更好吗?

React.createClass({
     handleEnter: function () {
         // Open a new one after a delay
         var self = this;
         this.timeout = setTimeout(function () {
             self.openWidget();
         }, DELAY);
     },
     handleLeave: function () {
        // Clear the timeout for opening the widget
        clearTimeout(this.timeout); 
     }
    ...
})

要么

React.createClass({
     handleEnter: function () {
         // Open a new one after a delay
         var self = this;
         this.state.timeout = setTimeout(function () {
             self.openWidget();
         }, DELAY);
     },
     handleLeave: function () {
        // Clear the timeout for opening the widget
        clearTimeout(this.state.timeout); 
     }
    ...
})

这两种方法都有效。我只想知道一个使用另一个的原因。


问题答案:

我建议将其存储在实例上,而不是存储在实例中state。每当state更新时(应仅按setState注释中的建议完成),React就会调用render并对实际DOM进行任何必要的更改。

由于的值对timeout组件的呈现没有影响,因此不应存在于中state。将其放在那里会导致对的不必要调用render



 类似资料:
  • 问题内容: 我有一个无状态会话bean,其中包含一个公共方法,几个私有方法和一些实例级变量。下面是一个伪代码示例。 我看到的是methodB正在打印未传递给MethodA的值。最好的说来,它是从同一bean的其他实例打印值。是什么原因造成的? 我应该指出代码在99.9%的时间内都能正常工作。但是,.01%对我造成了一些严重的问题/担忧。 我知道,如果我使用不同的公共方法,则两次调用之间可能无法获得

  • 一个持久化类的实例可能处于三种不同状态中的某一种。这三种状态的定义则与所谓的持久化上下文(persistence context)有关。Hibernate 的 Session 对象就是这个所谓的持久化上下文。这三种不同的状态如下: 瞬态(transient) 该实例从未与任何持久化上下文关联过。它没有持久化标识(相当于主键值)。 持久化(persistent) 实例目前与某个持久化上下文有关联。它

  • 我正在阅读JavaEE7文档,下面是关于无状态bean的说明。我不明白下面黑体字的说法是什么意思 无状态会话bean不维护与客户端的会话状态。当客户端调用无状态bean的方法时,bean的实例变量可能包含特定于该客户端的状态,但仅限于调用期间。方法完成后,不应保留客户端特定的状态。然而,客户端可能会更改池化无状态bean中实例变量的状态,并且这种状态将保留到池化无状态bean的下一次调用。除了在方

  • 本文向大家介绍AngularJs点击状态值改变背景色的实例,包括了AngularJs点击状态值改变背景色的实例的使用技巧和注意事项,需要的朋友参考一下 实例如下: 以上这篇AngularJs点击状态值改变背景色的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 用的是 React 和 Antd v5 为什么在改了 state 之后元素还是没变化呢 问过 GPT 但是没有结果