2017-09-05 111 views
1

執行我很抱歉,這個標題可能有點頭疼,我只是不能完全想到如何正確地說出我的問題(打開任何建議)。傳遞參數onClick到props.function()通過參考

基本上有3個分量:parentChildAChildB

Parent呈現兩個孩子,ChildB具有REF標籤,Parent使用該參考標記可以傳遞ChildB的功能ChildA

class Parent extends Component { 
    render() { 
    <ChildA openChildB={() => this.childb.open()} /> 
    <ChildB ref={instance => { this.childb = instance; }} /> 
    } 
} 

很基本。

我遇到的問題是,當ChildA執行該功能時,它需要傳遞一個參數。我似乎無法弄清楚這樣做的正確方法。

我試着用不同的語法傳遞函數下降到ChildA - <ChildA openChildB={this.childb.open} />

但導致錯誤,Can't Read Property Of Undefined

如何通過此函數傳遞變量? 任何幫助將不勝感激!

編輯:我知道我可以傳遞參數達到Parent,然後從那裏將其放置在功能() => this.childb.open(arg)但對於組織的緣故,我真的很喜歡把手內ChildA所有。

回答

1

您可以使用以下方法:

class Parent extends Component { 
    render() { 
    <ChildA openChildB={(arg1) => this.childb.open(arg1)} /> 
    <ChildB ref={instance => { this.childb = instance; }} /> 
    } 
} 

而且裏面ChildA你應該確保通過相關參數,當調用this.props.openChildB

function handleOpenOnB() { 
    // This is an example, you should use the relevant value you want to pass to the openChildB function 
    this.props.openChildB(this.state.val); 
}