2016-05-20 57 views
2

我需要使用以下函數將函數傳遞給this.props.children將函數傳遞給子組件this.props.children方法undefined

updateBarTitle(barTItle){ 
    this.setState({barTItle}); 
} 
render(){ 
    const children = React.Children.map(this.props.children, function (child) { 
     return React.cloneElement(child, { 
      updateBarTitle: this.updateBarTitle 
     }); 
     }); 
    {children} 
} 

但我總是收到Uncaught TypeError: Cannot read property 'updateBarTitle' of undefined

另外我想問問,這是最好的方法?我的目標是根據孩子的價值更新父母的狀態。所以我想或者這樣做。傳遞一個父母準備就緒的功能,那麼孩子會更新它,或者由父母訪問子狀態。例子會有很大的幫助。

回答

4

this你的映射函數沒有綁定正確的上下文。

不偷方面
const children = React.Children.map(this.props.children, function (child) { 
    return React.cloneElement(child, { 
     updateBarTitle: this.updateBarTitle 
    }); 
}, this); 

或使用箭頭功能:你可以通過this爲3擋的參數綁定它

const children = React.Children.map(this.props.children, (child) => { 
    return React.cloneElement(child, { 
     updateBarTitle: this.updateBarTitle 
    }); 
}); 
+0

謝謝!請問我目前的做法是正確的在更新我的父組件或者我應該從孩子那裏檢索一個狀態值? – Tony

+0

@託尼恕我直言傳遞功能(處理程序,行動)到兒童道具是好的反應。我會說它的首選方式.. – madox2