我在解决react-router的问题时遇到了麻烦。场景是我需要从状态父组件和路由中传递一组props的子路由。
我想做的是通过childRouteA
它propsA
,然后通过childRouteB
它propsB
。但是,我能弄清楚如何做到这一点的唯一方法是通过RouteHandler
这两个路径propsA
,propsB
这意味着每个子路径都会获取每个子props,而不管其是否相关。目前这不是阻塞问题,但我可以看到我会使用两个相同组件的时间,这意味着 propA 上的键将被 propB 的键覆盖。
# routes
routes = (
<Route name='filter' handler={ Parent } >
<Route name='price' handler={ Child1 } />
<Route name='time' handler={ Child2 } />
</Route>
)
# Parent component
render: ->
<div>
<RouteHandler {...@allProps()} />
</div>
timeProps: ->
foo: 'bar'
priceProps: ->
baz: 'qux'
# assign = require 'object-assign'
allProps: ->
assign {}, timeProps(), priceProps()
这实际上以我期望的方式工作。当我链接到/filters/time
我得到Child2
组件呈现。当我去/filters/price
我得到Child1
组件呈现。问题是,做这个过程,Child1
并且Child2
都通过了allProps()
,即使他们只需要价格和时间的props,分别。如果这两个组件具有相同的 prop 名称,这可能会成为一个问题,并且通常这不是使用不需要的 props 膨胀组件的好习惯(因为在我的实际情况下有超过 2 个子组件)。
所以总而言之,有没有办法RouteHandler
在我去时间路线(filters/time
)时传递timeProps并且只RouteHandler
在我去价格路线(filters/price
)时传递priceProps并避免将所有props传递给所有子路线?