我有嵌套的路线,深入3层,但我无法呈现我最后一个路线的组件。这就是我如何构造我的路线:渲染嵌套路线组件ReactJS
<Provider store={store}>
<Router history={browserHistory}>
<Route path="/login" component={Login} />
<Route path="/" name="test" component={requireAuthentication(App)}>
<Route path="/modules" name="Modules" component={Modules}>
<Route path="virtual-inputs" name="Virtual Inputs" component={VirtualInput}>
<Route path="add" name="Add new virtual input" component={AddVirtualInput}/>
</Route>
</Route>
</Route>
</Router>
</Provider>
当我去的模块/虚拟输入/加我得到我的组件VirtualInput呈现。
我使用this.props.children在模块内部渲染了我的子组件,但在进入/ modules/virtual-inputs/add时如何渲染我的组件AddVirtualInput?
我看到了已经在另一个线程(https://stackoverflow.com/a/33690586/846326)另一个解决办法是让我的路线是这样的:
<Route path="/modules" name="Modules" component={Modules}>
<Route path="virtual-inputs" name="Virtual Inputs" component={VirtualInput}/>
<Route path="virtual-inputs/add" name="Add new virtual input" component={AddVirtualInput}/>
</Route>
这是为了做到这一点,这意味着我们不能去再然后2级?
我正在做{React.cloneElement(this.props.children,{... this.props})}在我的父组件模块和VirtualInput中,但是当去到我的一个子组件导致Uncaught RangeError:最大调用堆栈大小超出。我有另一个例子,我有完全相同的问题。请参阅:https://gist.github.com/DriesS/b72dce81113b8c5cc374 – SteenhouwerD
如果您使用'{React.cloneElement(this.props.children,{... this.props})}',则您正在有效地传递'children'作为“孩子”本身的支柱,从而创造出无限的等级。为什么你需要'React.cloneElement()'?你可以直接渲染'this.props.children'。如果你真的需要传递所有的道具(为什么?我没有看到你使用它们),你可以做一些像'var {children,... rest} = this.props;'然后'React.cloneElement(孩子,休息)'。尽管如此,我仍然不明白。 –