2015-09-08 65 views
2

我的父組件是一個標籤列表。點擊標籤可將我引向Child#1或Child#2。我也可以通過URL路由到兒童#1或兒童#2。在這種情況下,我檢查路徑以瞭解以編程方式選擇哪個選項卡。我的子組件如何在React JS中更新我的父組件?

我從一個孩子轉到另一個孩子時出現問題。我的父母忘記了發生了變化 - 該組件中的初始化函數都沒有被調用,因爲它已經被渲染。因此,即使我現在正在查看Child#2,最初選擇的選項卡(Child#1)仍保持選中狀態。

被選擇的選項卡被存儲在父母的狀態 - 有沒有什麼辦法讓我從孩子的組件更新父母的狀態?

+1

聽起來像你需要一些家庭輔導;) – vsync

+0

這似乎是你應該將狀態移動到母部件,以便它可以知道任何狀態變化但是如果你不能這樣做,那麼你可以嘗試通過'forceUpdate([function callback])''https://facebook.github.io/react/docs/component- api.html#forceupdate – Scott

+0

有問題的狀態在父組件中,但我不確定如何從子組件修改該狀態。我現在想避免使用'forceUpdate',因爲我還沒有使用它。 – Rail24

回答

3

將函數從父項傳遞到子項(ren),以相應地修改狀態。一個非常簡單的版本,可能是這樣的:

class Parent { 
    setActive(activeId) { 
    this.setState({active: activeId}); 
    } 

    render() { 
    return (
     <Child setActive={this.setActive}/> 
    ); 
    } 
} 
+0

輝煌!我不知道我可以通過道具傳遞函數。 – Rail24

相關問題