2017-05-18 12 views
1

prevProps.search.queryは、還元状態を更新するアクションをディスパッチした後、常にthis.props.search.queryと同じです。prevProps.search.queryは常にthis.props.search.queryと同じです。

私は(それが前の検索クエリあったように時間なしで)彼らは両方の印刷「テスト」

prevProps.search.querytestinすべきではないでしょう入力して「テスト」を入力し、componentDidUpdate()this.props.search.queryprevProps.search.queryを記録した場合は?私の減速で

// results component 

class Results extends React.Component { 

    constructor (props) { 

    super(props); 

    this.state = { 
     resultsClass: 'row search-results', 
     results: null, 
     searchQuery: '' 
    } 
    } 

    componentDidUpdate(prevProps, prevState){ 

    if(this.props.search.query !== prevProps.search.query){ 
     this.getSearchResults(); 
    } 

    } 

} 

// input component 

<input type="text" onChange={this.handleSearchUpdate} /> 

handleSearchUpdate() { 

    this.props.dispatch(setSearchQuery(this.queryInput.value)); 

} 

、私は状態に

case constants.SET_SEARCH_QUERY: 
     return merge({}, set(state, 'search.query', action.query)); 

答えて

0

を設定しています私はuがcomponentWillReceivePropsでそれを間違えだと思います。 あなたが

nextPropsはここに多くを学ぶ必要がある場合は、componentWillReceiveProps(nextProps)使うべきhttps://facebook.github.io/react/docs/react-component.html#componentwillmount

+0

ComponentDidUpdateもnextPropsている - https://facebook.github.io/react/docs/react-component.html#componentdidupdate – Stretch0

+0

yeapを、あなたが正しいです、私の入力でテストされた 'didUpdate'でもうまく動作するはずです。私はあなたが良い全体コンポーネントを表示すると思う、多分問題はレンダリングセクションにあります。 – Lojka

関連する問題