2017-06-22 11 views
1

inputvalue={this.state.searchValue}とします。setStateを使用してクリアする前に、入力が空であるかどうかを確認する必要がありますか?

onClose =() => { 
    this.setState({searchValue: ''},() => { 
     this.search(); 
    }); 
    } 

たとえば、文字列がすでに空である間にコンテナが閉じられている場合、これは無駄ですか?

このようにチェックする必要がありますか?

onClose =() => { 
    if (!isEmpty(this.state.searchValue)) { 
    this.setState({searchValue: ''},() => { 
     this.search(); 
    }); 
    } 
} 

これがRedux状態の場合はどうなりますか?私はRedux考える

onClose =() => { 
    if (this.props.inputValue) { 
    this.props.clearInput(); 
    } 
} 

は少し賢くあり、あなたのためにshouldComponentUpdateを行いますので、レンダリングthis.props.inputValue === ''nextProps.inputValue === ''を実現し、保存するのでしょうか?

答えて

1

リアクションは、setState()が呼び出されるたびにコンポーネントをレンダリングします。この動作を防止したい場合は、コンポーネントをReact.PureComponentに拡張してレンダリングするかどうかを決定するために以前の状態値を比較します。

Redux.connectでコンポーネントをラップすると、デフォルトではshouldComponentUpdateにシャロー比較が適用されます。

+0

'!isEmpty(this.state.searchValue)'だけをチェックしても問題ありませんか? – kayla

関連する問題