javascript – ReactJS中this.state和this.setstate的区别是什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – ReactJS中this.state和this.setstate的区别是什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2428字,纯文字阅读大概需要4分钟。
内容图文
我想更改hasSubmit键的值,就像在First Code部分中一样.我知道这不推荐.但第二个代码是异步的,我不想使用setState的回调函数.
> this.state和setState有什么区别?
>有没有办法立即更改状态值hasSubmit?
First Code:
this.state.hasSubmit = false
this.setState({})
//Code that will use `hasSubmit`.
Second code:
this.setState({
hasSubmit: false,
});
//Code that will use `hasSubmit`.
加:
场景是:
hasSubmit
setfalse
ingetInitialState()
.hasSubmit
will change tofalse
when I clicksubmit
button.hasSubmit
will change totrue
when submitted.
首先单击提交没有问题,hasSubmit将设置为true.
但是使用第二个异步代码,第二次单击提交将是错误的,因为hasSubmit仍然是真的,而第一个代码可以解决问题.
解决方法:
这是React docs所说的:
NEVER mutate
this.state
directly, as calling setState() afterwards may replace the mutation you made. Treat this.state as if it were immutable.
setState()
does not immediately mutate this.state but creates a pending state transition. Accessingthis.state
after calling this method can potentially return the existing value.There is no guarantee of synchronous operation of calls to setState and calls may be batched for performance gains.
setState()
will always trigger a re-render unless conditional rendering logic is implemented inshouldComponentUpdate()
.If mutable objects are being used and the logic cannot be implemented in
shouldComponentUpdate()
, callingsetState()
only when the new state differs from the previous state will avoid unnecessary re-renders.
以设计方式使用API??总是明智的.如果文档说不改变你的状态,那么你最好不要改变你的状态.
虽然setState()在技术上可能是异步的,但它肯定不会以任何明显的方式变慢.组件的render()函数将以非常短的顺序调用.
直接设置状态的一个缺点是React的生命周期方法 – shouldComponentUpdate(),componentWillUpdate(),componentDidUpdate() – 依赖于使用setState()调用的状态转换.如果直接更改状态并使用空对象调用setState(),则无法再实现这些方法.
另一个是它只是糟糕的编程风格.你在两个陈述中做了你可以做的一个.
而且,这里没有实际的好处.在这两种情况下,只有在调用setState()(或forceUpdate())之后才会触发render().
您声称有必要这样做而不实际解释需要的是什么.也许你想更详细地解决你的问题.可能有更好的解决方案.
最好使用框架而不是框架.
UPDATE
从下面的评论:
The need is that I want use the changed hasSubmit in below.
好的我现在明白了.如果您需要立即使用未来的州财产,最好的办法就是将其存储在本地变量中.
const hasSubmit = false;
this.setState({
hasSubmit: hasSubmit
});
if (hasSubmit) {
// Code that will use `hasSubmit` ...
内容总结
以上是互联网集市为您收集整理的javascript – ReactJS中this.state和this.setstate的区别是什么?全部内容,希望文章能够帮你解决javascript – ReactJS中this.state和this.setstate的区别是什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。