2017-05-18 4 views
1

prevProps.search.query ist immer das selbe wie this.props.search.query nach dem Versenden einer Aktion zur Aktualisierung des Redux-Status.prevProps.search.query ist immer das selbe wie this.props.search.query

Wenn ich ‚Test‘ im Eingabe eingeben und melden Sie sich this.props.search.query und prevProps.search.query in componentDidUpdate() sie werden beide print ‚Test‘

Sollte nicht prevProps.search.querytestin sein (ohne h, wie es die vorherige Suchabfrage war)?

// 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)); 

} 

In meiner Reduzierungen, ich bin die Einrichtung den Zustand

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

Antwort

0

I u denken verwechselt es mit componentWillReceiveProps. Sie sollten componentWillReceiveProps(nextProps) verwenden, wenn Sie benötigen nextProps

mehr erfahren hier https://facebook.github.io/react/docs/react-component.html#componentwillmount

+0

ComponentDidUpdate auch nextProps hat - https://facebook.github.io/react/docs/react-component.html#componentdidupdate – Stretch0

+0

yeap, Du hast Recht, es funktioniert gut, auch wenn 'didUpdate' nur auf meine Eingabe getestet wurde. Ich denke, du zeigst besser die ganze Komponente, vielleicht ist das Problem im Renderbereich. – Lojka

Verwandte Themen