2015-12-17 44 views
1

我有一個不屬於任何其他組件的組件。當用戶點擊鏈接時,頁面將跳轉到該鏈接,該鏈接通過react-router實現。React.js:從獨立組件訪問整體應用程序狀態

<Link to={`/weather-stations/${this.props.active_device}`} >view detail 
</Link> 

我不能找到一種方法,應用程序的狀態傳遞給組件,如:<ComponentName data={ this.state }/>我不知道什麼是推薦的方式來做到這一點的反應是?謝謝。

+0

? http://facebook.github.io/react/docs/context.html – ezakto

回答

1

這樣做的「官方」(被Facebook即使用)的方式是通過流量結構如下所述:https://facebook.github.io/flux/docs/overview.html

從本質上講,這涉及到「存儲」持有,然後訪問的數據的創建並由您的React組件顯示。在你的例子中,你可以創建一個WeatherStationDataStore,在active_device ID上鍵入 - 該鏈接另一端的組件可以從URL中獲取ID併發送一個叫做WeatherStationDataStore.get(id)的「Action」 - 如果需要任何服務器交互獲取可以通過商店提取的數據。

Flux的標準「待辦事項」示例可以在這裏找到:https://facebook.github.io/flux/docs/todo-list.html,這是一個很好的介紹。

+1

Flux是一個很好的解決方案,也是Facebook使用的解決方案,但我不確定我會說這是「官方」答案。一個更通用的解決方案將涉及*任何*種應用程序狀態,它們位於應用程序的外部*(例如磁通存儲)。 –

+0

公平點@MichelleTilley,我並不是想要暗示「唯一」解決方案:當然,你可以擁有一個直接調用的單例數據存儲對象,而不必擔心調度程序和操作等問題,已經在過去與React一起實施。我們最終轉向了「適當」的Flux實現。 –

0

試試這個 -

在聯結部件 -

<Link to={`/weather-stations/${this.props.active_device}`} state={{"foo":"bar"}} >view detail 
</Link> 

而且在使用也許上下文鏈接組件

var data = this.props.location.state; 
//doSomethingWithData(data.foo);