2015-12-17 41 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);