2016-11-08 1 views
1

Ich habe 2 KomponentenAnruf componentWillReceiveProps() nach Zustand wird von Minderer immer aktualisiert Reagieren/Redux

1] Eltern
2] Kind

Ich bin vorbei Mutter Komponenten Aktion Kind zu bekommen auf Änderung genannt der Dropdown-Liste.

Die Methode der übergeordneten Komponenten ruft die Funktion des Speichers (AJAX-Aufruf) auf und aktualisiert die Statusvariable. Nach dem Update-Zustand möchte ich einige Operationen in componentWillReceiveProps() ausführen, aber es geht nicht in componentWillReceiveProps().

Im Folgenden finden Sie Code in Stammkomponente -

1] Eltern

componentWillReceiveProps(props) { 
    this._setTrackToParams(props) 
    debugger; 
    let liveVideoList = this.state.liveVideoList 
    if(props.liveRaceVideos != null && _.isEmpty(this.state.liveVideoList)) { 
     console.log('live race video if') 
     this.state.liveVideoList.push(props.liveRaceVideos) 
     this.setState(this.state) 
    } else if(props.liveRaceVideos != null && this.selectedKey) { 
     console.log('live race video else') 
     this.state.liveVideoList[this.selectedKey] = props.liveRaceVideos 
     this.setState(this.state) 
    } 
    console.log("bye") 
} 

    renderChild() { 
    let selectValue = !this.selectedKey ? this.props.params.trackCode : this.selectedKey 
    if(this.state.liveVideoList) { 
     return _.map(this.state.liveVideoList,(value , key) => { 
      if(key < 3) { 
       return (
        <LiveVideoPanel ref = "liveVideoPanel" key = {key} currentTracks = {this.props.currentTracks} liveVideos = {value} selectedValue = {selectValue} onChange = {this._toggleVideos} onChangeTrackList = {this.onChangeTrackList.bind(this)} videoCount = {key}/> 
       ) 
      } 
     }) 
    } 
} 


    onChangeTrackList(id, key) { 
    if(id) { 
     this.selectKey = key 
     this.props.fetchLiveRaceVideo(id) 
    } 
} 

Also ich rufe this.onChangeTrackList() Funktion auf Änderung der Dropdown-Liste. und diese Funktion intern aufrufen this.props.fetchLiveRaceVideo (ID) Aktion. Ich bekomme "Link" von diesem Ajax-Anruf. und dieser Link wird im Status aktualisiert.

Nach Zustand Aktualisierung möchte ich componentWillReceiveProps() aufrufen, aber dies wird nicht aufgerufen.

+0

Haben Sie überprüft, dass Ihre Aktion 'this.props.fetchLiveRaceVideo' aufgerufen wird? Haben Sie überprüft, dass der von Ihnen erwartete Aktionstyp von dieser Aktion ausgelöst wird? Haben Sie außerdem überprüft, welcher Status vom Reduzierer zurückgegeben wird, der den abgefragten Aktionstyp verarbeitet? – Fizz

Antwort

1

Es ist möglich, dass componentWillReceiveProps nicht aufgerufen wird, da stattdessen componentWillMount aufgerufen wird. Ich würde in ein console.log schreiben und sehen, ob das der Fall ist.

Aus der Dokumentation:

Reagieren nicht nennen componentWillReceiveProps mit anfänglichen Requisiten bei der Montage. Es ruft diese Methode nur auf, wenn einige Requisiten der Komponente aktualisiert werden. Das Aufrufen von this.setState löst componentWillReceiveProps im Allgemeinen nicht aus.

Verwandte Themen