Reactjs 这个.setState({})保证会导致重新渲染吗
我继承了一些要维护的代码,其中有一行:Reactjs 这个.setState({})保证会导致重新渲染吗,reactjs,Reactjs,我继承了一些要维护的代码,其中有一行: this.setState({}); // Force update 这是否保证会导致重新呈现?设置状态以不变的方式将作为参数传递的对象合并到实际状态this.setState({})不会将任何内容合并到state,但实际上会返回一个新对象,React执行的浅层比较将始终断言为false,并且将触发重新渲染,除非使用shouldComponentUpdate明确取消。因此,是的,在这种情况下,它相当于强制更新,并且它与此相同。根据文档和其他几种方法的顺序
this.setState({}); // Force update
这是否保证会导致重新呈现?设置状态以不变的方式将作为参数传递的对象合并到实际状态
this.setState({})
不会将任何内容合并到state,但实际上会返回一个新对象,React
执行的浅层比较将始终断言为false
,并且将触发重新渲染,除非使用shouldComponentUpdate
明确取消。因此,是的,在这种情况下,它相当于强制更新
,并且它与此相同。根据文档和其他几种方法的顺序
import React,{Component}来自'React';
从“react native”导入{Button};
类测试扩展了组件{
render(){
console.log('render');
返回这个.setState({})title='Test'/>;
}
}
导出默认测试;
每次单击按钮时,都会触发console.log
有趣的一点是,如果将
this.setState({})
替换为this.setState()
,则单击后不会重新渲染。这取决于具体情况。若您想要呈现一个组件,react会在内部检查DOM是否等于previous(若组件的道具根本并没有改变,就会发生这种情况)。如果dom与以前的版本相同,则react检查shouldComponentUpdate
forceUpdate
不同于总是呈现组件的.setState({})。使用this.forceUpdate()
可以保证强制重新呈现,但会对代码结构和实践提出疑问。谢谢-但是.setState({})会强制更新吗?这与其中引用的答案和文档相矛盾