【发布时间】:2015-10-30 00:28:07
【问题描述】:
我无法解决 React 路由器的问题。场景是我需要从状态父组件和路由传递子路由一组道具。
我想做的是通过childRouteA 其propsA,并通过childRouteB 其propsB。但是,我能弄清楚如何做到这一点的唯一方法是同时传递RouteHandler propsA 和 propsB 这意味着每条子路由都会获得每个子道具,无论其是否相关。目前这不是一个阻塞问题,但我可以看到有一段时间我会使用相同组件中的两个,这意味着 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(),即使它们分别只需要价格和时间道具。如果这两个组件具有相同的 prop 名称,这可能会成为一个问题,并且通常使用不需要的 prop 来膨胀组件并不是一个好习惯(因为在我的实际情况下有超过 2 个子组件)。
所以总之,有没有办法在我去时间路线(filters/time)时传递RouteHandler timeProps,当我去价格路线(filters/price)时,只将priceProps传递给RouteHandler并避免将所有道具传递给所有子路线?
【问题讨论】:
标签: javascript coffeescript reactjs parent-child react-router