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

React.js中的setState与replaceState

蒋华美
2023-03-14
问题内容

我是React.js库的新手,我正在浏览一些教程,发现了:

  • this.setState
  • this.replaceState

给出的说明不是很清楚(IMO)。

setState is done to 'set' the state of a value, even if its already set 
in the 'getInitialState' function.

同样,

The replaceState() method is for when you want to clear out the values 
already in state, and add new ones.

我先尝试 this.setState({data: someArray}); 然后 this.replaceState({test: someArray}); 再进行console.logging它们,发现state现在同时具有datatest

然后,我 this.setState({data: someArray}); 依次尝试 this.setState({test: someArray}); ,然后进行console.logging它们,发现它们state又具有datatest

那么,两者之间到底有什么区别?


问题答案:

setState当前和以前的状态合并。使用replaceState,它将抛出当前状态,并仅用您提供的状态替换它。通常setState使用该命令,除非由于某些原因确实需要删除密钥;但是将它们设置为false
/ null通常是更明确的策略。

虽然有可能改变。replaceState当前使用传递的对象作为状态,即状态,replaceState(x)一旦设置this.state === x。这比轻一些setState,因此如果成千上万的组件频繁设置其状态,则可以将其用作优化。
我用这个测试用例断言了这一点。

如果您的当前状态是{a: 1},并且您打电话this.setState({b: 2}); 当应用状态时,它将为{a: 1, b: 2}。如果你打电话,this.replaceState({b: 2})你的状态将是{b: 2}

旁注:状态不是立即设置的,因此this.setState({b: 1}); console.log(this.state)在测试时不要这样做。



 类似资料:
  • 我是React中的一个noob,正在尝试为水相制作一个简单的应用程序,用户输入一个数字,然后根据数值显示水的状态,例如,如果他输入212,它应该是气体,12应该是固体,但由于某些原因,它没有正确显示数值,非常感谢任何帮助!!!

  • react 在 A 函数设置了state 然后调用 B函数,B函数中使用了state,但直接获取state不是最新值。 使用Effect和通过函数参数传递来解决,感觉都不优雅,大佬们有没有比较好的经验?

  • 如何正确使用和?例如,当我创建一个有状态小部件时,它开始加载数据(FutureBuilder),然后我应该用新数据更新列表,所以我使用setState,但它开始循环无穷大(因为我再次重建了小部件),有什么解决方案吗?

  • 类组件中setState更新状态不同写法定时器结果不同 使用解构 不使用解构 为什么两种答案不一样呢,第一个只触发一次,第二个定时器有效,按理来说setState是异步的都不能出发定时器啊,有大佬帮忙解释一下吗

  • 问题内容: 这是我的情况: 在this.handleFormSubmit()上,我正在执行this.setState() 在this.handleFormSubmit()内部,我正在调用this.findRoutes(); -取决于this.setState()的成功完成 this.setState(); 在this.findRoutes被调用之前没有完成… 在调用this.findRoutes(

  • 问题内容: 随着版本0.12的发布,组件内部不再可用,但是听起来您可以简单地用替换它,并且一切都将按预期工作。 从React v0.12docs: 这意味着您需要重命名:someElement.props.key-> someElement.key 但是,当我尝试在组件的render()函数中访问时,出现了。 请参阅我的笔来说明问题:http : //codepen.io/anon/pen/jac