假设input
有value={this.state.searchValue}
。
onClose = () => {
this.setState({searchValue: ''}, () => {
this.search();
});
}
例如,如果在字符串已经空的情况下关闭容器,这是否浪费?
这样的检查应该完成吗?
onClose = () => {
if (!isEmpty(this.state.searchValue)) {
this.setState({searchValue: ''}, () => {
this.search();
});
}
}
如果这是Redux
状态怎么办?
onClose = () => {
if (this.props.inputValue) {
this.props.clearInput();
}
}
我认为Redux
更聪明,为你做shouldComponentUpdate
,所以它会实现this.props.inputValue === ''
和nextProps.inputValue === ''
并保存渲染?
答案 0 :(得分:1)
只要调用setState()
,React就会呈现组件。如果您想要阻止此行为,您的组件可以扩展React.PureComponent
,它将比较之前的状态值,以决定是否渲染。
使用Redux.connect
打包组件时,默认情况下它还会在shouldComponentUpdate
中应用浅层比较。