Reactjs 反应路由器:通过路由传递数据

Reactjs 反应路由器:通过路由传递数据,reactjs,reactjs-flux,react-router,Reactjs,Reactjs Flux,React Router,我正试图找出通过我的路线传递数据的最佳方式。我知道我可以使用params,但有些类型的数据不属于params 例如:我有一个显示应用程序列表的索引页。每个应用程序旁边都有一个按钮,它会将您路由到该应用程序的视图 我想将应用程序本身传递给应用程序处理程序。但是,通过params传递整个应用程序是没有意义的。尽管将应用程序标识符传递给params(即:id或:name)是有意义的 因此,我认为应该这样做,将应用程序标识符传递给params,然后在应用程序组件中搜索我的应用程序存储,以查找给定标识符的

我正试图找出通过我的路线传递数据的最佳方式。我知道我可以使用params,但有些类型的数据不属于params

例如:我有一个显示应用程序列表的索引页。每个应用程序旁边都有一个按钮,它会将您路由到该应用程序的视图

我想将应用程序本身传递给应用程序处理程序。但是,通过params传递整个应用程序是没有意义的。尽管将应用程序标识符传递给params(即:id或:name)是有意义的

因此,我认为应该这样做,将应用程序标识符传递给params,然后在应用程序组件中搜索我的应用程序存储,以查找给定标识符的适当应用程序

但是,传递应用程序本身不是更容易、更快吗?有没有办法做到这一点。有没有理由不这样做

下面是一些代码:

查看

查看


提前谢谢

问题在于,当用户刷新或以其他方式直接加载url时,需要显示正确的视图。因为URL只是字符串,所以需要将路由表示为字符串。您不能(轻松地)将实际的应用程序推送到url中

路由器的任务是获取该字符串(URL)并将其映射到实际代码(处理程序),并提供任何额外数据(参数、查询和/或哈希)

作为路由器用户,您的工作是确保URL中有足够的信息供路由器选择正确的处理程序,并使处理程序有足够的信息来完成其工作(例如,显示哪个应用程序)

如果url类似于
mysite.com/showApplication
,那么显然没有足够的信息

如果是这样的话:

mysite.com/showApplication/React.createClass(%7Brender%3A%20function()%7Breturn%20React.createElement('div'%2C%20null%2C%20%22I'm%20an%20application!%22%7D%7D)%3B
i、 将应用程序放在url中,这是太多的信息,通常是一个非常糟糕的主意


但是
mysite.com/showApplication/applicationName
正好:-)

我将提供一种简单的方法,使用一个全局对象跨路由共享信息,例如

window.CONTEXT = {'share':'this'}
请注意,只有当您想要共享的对象可以由路由本身重新创建时,才使用这种方式非常重要,因为上面FakeRain提到,路由必须包含足够的信息,以便在用户重新加载时为其提供相同的体验


如果您需要为想要共享的内容请求信息,但又不需要庞大的链接,那么使用此功能的唯一原因是为了节省带宽。

您是如何解决此问题的?我认为第一个答案不是你想要的。我有同样的问题:(嗯,你忘了这方面的一个实际用例,在我的例子中,我通过一堆ajax请求生成一个对象;我通过参数(包括id)将一些信息发送到另一个路由,我可以通过id重新生成整个对象,没有问题,但是如果我可以发送对象,我会节省带宽,如果对象未定义,它将在y id,一个实际的用例。