如果在不使用 seState 的情况下更改状态,是不是会发生 Re-Render?

Posted

技术标签:

【中文标题】如果在不使用 seState 的情况下更改状态,是不是会发生 Re-Render?【英文标题】:Will Re-Render occur if state is changed without using seState?如果在不使用 seState 的情况下更改状态,是否会发生 Re-Render? 【发布时间】:2019-04-30 03:38:13 【问题描述】:

我正在尝试如下改变状态,

this.state.page = 0

我没有使用setState,因为我不希望发生重新渲染。但仍在发生重新渲染。据我所知,只有 setState 会导致重新渲染。

如果我错了,请纠正我。还请让我知道如何在状态更改时防止重新渲染。

【问题讨论】:

请用您的代码更新您的问题,以便其他人可以看到并更好地帮助您。 可以使用shouldComponentUpdate生命周期 您不应该以这种方式使用状态。如上所述,您可以使用this.setState( page: 0 )。然后整合shouldComponentUpdate(nextProps, nextState),如果你的page状态变量有变化,这个函数应该返回false 【参考方案1】:

给 this.state.param 赋值不会重新渲染屏幕。您需要使用

this.setState(param: val)

【讨论】:

【参考方案2】:

您可以为state 赋值的唯一位置是constructor。在任何其他地方您需要使用setState()

来自react-native 文档:一般情况下,您应该在构造函数中初始化状态,然后在需要更改时调用setState

所以你不能用赋值来改变它,你必须使用setState

【讨论】:

以上是关于如果在不使用 seState 的情况下更改状态,是不是会发生 Re-Render?的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS UI 路由器 - 在不重新加载状态的情况下更改 url

Apache Flink-在不使用广播状态的情况下更新操作员中的配置

如何在不改变状态的情况下对 redux 操作做出反应

引导切换以使用 AJAX 在不刷新页面的情况下更改 MySQL TINYINT

如何在不使用 React Native 中的状态的情况下验证 TextInput 值?

Django allauth 在不注销的情况下更改密码