2017-08-24 2 views
0

Ich habe nach diesem Text gesucht, aber keiner meiner Situation behoben. Meine Bedingung ist, dass ich einen Prop-Wert habe. Ich muss diesen Wert auf 2 State-Variable setzen. Eine direkte Zuweisung ist eine indirekte. jetzt aufgrund der asynchronen Natur des gesetzten Zustands oder des unbekannten Grundes, bevor der Wert gesetzt wurde, der unter gerendert wurde. Wie soll ich dieses Verhalten kontrollieren? das ist mein componentWillReceiveprops der KinderWie man einen Prop-Wert einem Zwei-Zustand in reagieren

componentWillReceiveProps(nextProps) { 
    let lastManualFlag =[...this.state.lastManualFlag]; 
    console.log('before',lastManualFlag,nextProps.groupBy.length); 
    for(var i=0;i<nextProps.groupBy.length;i++){ 
     lastManualFlag[i]=false; 
    } 
    console.log("after",lastManualFlag) 
    this.setState({lasManualProg:lastManualFlag}); 
    this.setState({ groupBy: nextProps.groupBy}); 

    } 

dies meine Methode

render() { 
    console.log('this.state',this.state); 
    if (!this.props.groupBy) return null; 

, wenn ich meine lastManualFlag noch trösten sah machen ist Größe 0-Array

+0

Haben Sie versucht, nur eine setState-Zeile statt zwei zu verwenden? – mersocarlin

+0

Entschuldigung, es ist ein dummer Fehler, den ich gemacht habe. 'lasManualProg' anstelle von' lastManualProg' – LowCool

+1

Es gibt auch einen Tippfehler. 'lastManualProg' statt' lasManualProg' – mersocarlin

Antwort

0

ist Sie haben zwei Anrufe Zustand

einstellen

Wie wäre es mit einem Anruf wie:

this.setState({...state,lastManualProg:lastManualFlag,groupBy: nextProps.groupBy}); 
Verwandte Themen