在使用setState清除之前,您应该检查输入是否为空?

时间:2017-06-22 13:40:35

标签: reactjs redux react-redux

假设inputvalue={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 === ''并保存渲染?

1 个答案:

答案 0 :(得分:1)

只要调用setState(),React就会呈现组件。如果您想要阻止此行为,您的组件可以扩展React.PureComponent,它将比较之前的状态值,以决定是否渲染。

使用Redux.connect打包组件时,默认情况下它还会在shouldComponentUpdate中应用浅层比较。