爲了簡化,我有一個包含子組件的組件。頂級父組件是唯一的有狀態組件。但是這種狀態需要在深處的兒童身上設定。這些孩子怎麼能進入最頂級父母的狀態呢?在合成組件中,子代如何訪問最頂層的狀態屬性
是向下傳遞的狀態通過props
的唯一途徑?我問,因爲我有一個內部擁有很多孩子的組合,所以要進入狀態,我必須將狀態作爲一個道具傳遞到5個等級,這樣才能讓第5個等級進入狀態。
對於一個簡單的例子:
var Timer = React.createClass({
getInitialState: function() {
return {secondsElapsed: 0};
},
tick: function() {
this.setState({secondsElapsed: this.state.secondsElapsed + 1});
},
componentDidMount: function() {
this.interval = setInterval(this.tick, 1000);
},
componentWillUnmount: function() {
clearInterval(this.interval);
},
render: function() {
return (
<Label />
);
}
});
var Label = React.createClass({
render: function() {
return (
<div>Seconds Elapsed: {this.state.secondsElapsed}</div>
);
}
});
ReactDOM.render(<Timer />, mountNode);
這個例子給出了this.state is null
啊!通量看起來不錯。我認爲這會帶來很多麻煩,因爲我需要生成和維護尊重單個狀態對象的多個組件。 Flux是實現這個目標的方式嗎?因此,這將是2只1石的鳥類,它可以處理深層的孩子,並且還可以在克隆組件中保持狀態? – Noitidart
正確,你可以看到它幾乎是某種單件,組件可以用作'道具',所以你沒有任何地方的大量依賴。我不再構建任何React應用程序了! –
非常感謝。我看着它,但遇到了一些困難。你可以在jsfiddle中使用Flux來顯示一個商店,然後創建三個'hello blah',divs,其中blah是狀態。我無法弄清楚這是什麼「Fluxy」,我只是繼續製作一個全局對象,並設置狀態。我可以提出另一個問題,我應該這樣做嗎? – Noitidart