2017-03-08 4 views
0

1) Wie übermittele ich diesen Wert als Prop zu Child1 Komponente 2) Wenn ich den Statuswert nur an Child1-Komponente übergeben, erhalte ich nicht den aktualisierten Wert in Child1 -Reactjs Geschwisterkomponente erhält den aktualisierten Statuswert nicht

Gefolgt verschiedene Artikel - über Requisiten zwischen Geschwistern aber nichts funktioniert .. Eltern vorbei:

export default class Parent extends Component { 

    constructor(props) { 
    super(props); 
    this.state = { 
     toggledata: '', 
    }; 
    } 

    handleToggle(value) { //getting the updated value to 'value' 
    this.setState({ toggledata: value }); 
    } 

    render() { 
    return (
     <div> 
     <Child1 ToggleStatus={this.state.toggledata} /> 
     <Child2 callbackFromParent={this.handleToggle.bind(this)} /> 
     </div> 
    ); 
    } 
} 
Parent.propTypes = { 
    params: PropTypes.object, 
}; 

Child2:

class Child1 extends Component { 
constructor(props) { 
    super(props); 
    this.state = { 
     text: '', 
    }; 
    } 

    handleClick(event) { 
    this.setState({ text: 'green' },() => { 
     this.props.callbackFromParent(this.state.text); 
    }); 
    } 

render(){ 
return (
      <a onClick={() => { this.handleClick(event) }} href=""> 
      Click me 
      </a> 

    ); 
    } 
} 
export default Child1; 
+1

Sie sollten einen Fehler mit diesem Code erhalten. –

Antwort

0

Sie waren nicht an Ihren Rückruf gebunden this. Sie sind this.setState wird nicht für Ihre Eltern aufgerufen, es heißt innerhalb Child2. Der Kontext von this in handleToggle stammt von Child2, nicht von Parent, wenn Sie ihn nicht binden.

<Child2 callbackFromParent={this.handleToggle.bind(this)} />

+0

dann, wie man this.setState für den Klick in Child2 aufrufen und es in der Elternkomponente registrieren und an Child1 übergeben - das ist meine eigentliche Frage - möglicherweise habe ich es nicht richtig gemacht und ich habe mit Bind aktualisiert. – splendidDev

Verwandte Themen