如果在不使用 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-在不使用广播状态的情况下更新操作员中的配置
引导切换以使用 AJAX 在不刷新页面的情况下更改 MySQL TINYINT