2017-03-08 88 views
0

1)如何將此值作爲道具傳遞給Child1組件 2)如果我只是將狀態值傳遞給Child1組件,我沒有獲取Child1內的更新值 -Reactjs兄弟組件沒有得到更新的狀態值

其次不同的文章 - 關於通過的兄弟姐妹,但沒有工作之間的道具.. 家長:

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

您應該會收到該代碼的錯誤。 –

回答

0

您的回撥沒有約束this。 你是this.setState不是爲你的父母打電話,而是在Child2之內。在handleTogglethis的上下文來自Child2,如果不綁定它,則不是Parent。

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

+0

然後如何調用this.setState在Child2中發生的單擊並將其註冊到父組件並將其傳遞給Child1 - 這是我的實際問題 - 可能是我沒有把它正確,我已更新綁定.. – splendidDev