我继承了一些要维护的代码,其中包含以下行:
this.setState({}); // Force update
是否可以保证重新渲染?
答案 0 :(得分:6)
setState
以不变的方式将作为参数传递的对象合并到实际状态中。 this.setState({})
不会合并任何内容,但实际上会返回一个新对象,由React
执行的浅表比较将始终断言为false
并会触发重新渲染,除非用{明确取消了{1}}。所以是的,在这种情况下,它等效于shouldComponentUpdate
,并且带有相同的caveats。
答案 1 :(得分:3)
您实际上可以轻松test it:
import React, { Component } from 'react';
import { Button } from 'react-native';
class Test extends Component {
render() {
console.log('render');
return <Button onPress={() => this.setState({})} title='Test' />;
}
}
export default Test;
每次单击按钮,都会触发console.log。
有趣的一点是,如果将this.setState({})
替换为this.setState()
,则单击后不会重新渲染。
答案 2 :(得分:1)
根据文档以及其他几种方法
请参阅此link以获取详细的
答案 3 :(得分:-1)
这取决于。如果要渲染组件,请在内部做出反应,以检查DOM是否等于以前的DOM(如果完全不更改组件的属性,则会发生这种情况)。如果dom与以前的版本相同,请进行检查shouldComponentUpdate
。 forceUpdate
与this.setState({})
不同,后者总是呈现组件。