React.js中的setState vs replaceState [英] setState vs replaceState in React.js

查看:115
本文介绍了React.js中的setState vs replaceState的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是React.js图书馆的新手,我正在浏览一些教程而且我遇到过:

I am new to React.js Library and I was going over some of the tutorials and I came across:


  • this.setState

  • this.replaceState

  • this.setState
  • this.replaceState

给出的描述不是很清楚(IMO)。

The Description given is not very clear (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.logged他们和我发现现在有数据测试

然后,我尝试了 this.setState({data:someArray}); 接着是 this.setState({test:someArray}); ,然后console.logged它们,我发现再次同时拥有数据测试

Then, I tried this.setState({data: someArray}); followed by this.setState({test: someArray}); and then console.logged them and I found that state again had both data and test.

那么,这两者究竟有什么区别?

So, what exactly is the difference between the two ?

推荐答案

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

With setState the current and previous states are merged. With replaceState, it throws out the current state, and replaces it with only what you provide. Usually setState is used unless you really need to remove keys for some reason; but setting them to false/null is usually a more explicit tactic.

尽管它可能会改变; replaceState当前使用作为状态传递的对象,即 replaceState(x),一旦设置为 this.state === x 。这比 setState 轻一点,因此如果成千上万的组件经常设置其状态,它可以用作优化。

I用此测试用例声明这一点。

While it's possible it could change; replaceState currently uses the object passed as the state, i.e. replaceState(x), and once it's set this.state === x. This is a little lighter than setState, so it could be used as an optimization if thousands of components are setting their states frequently.
I asserted this with this test case.

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

If your current state is {a: 1}, and you call this.setState({b: 2}); when the state is applied, it will be {a: 1, b: 2}. If you called this.replaceState({b: 2}) your state would be {b: 2}.

附注:状态未立即设置,因此请勿执行 this.setState({b:1});测试时,console.log(this.state)

Side note: State isn't set instantly, so don't do this.setState({b: 1}); console.log(this.state) when testing.

这篇关于React.js中的setState vs replaceState的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆