通过子路径渲染组件

时间:2016-11-24 15:54:35

标签: reactjs redux react-redux

我有一个组件上有一些导航按钮,路由设置如下:

<Route path="/" component={App}>
  <IndexRoute component={HomePage} />
  <Route path="/id/person" component={Person} >
    <IndexRedirect to="summary" />
    <Route path="/id/person/summary" component={Summary} />
    <Route path="/id/person/history" component={History} />
  </Route>
</Route>

这一切都在React / Redux设置中运行,并且可以正常工作到HomePage。我不知道如何渲染子路线和在线示例有点稀缺。

在Person组件中,我应该这样做:

<div>
   {props.children}
</div>

但是,我如何将Redux状态传递给它呢?虽然感觉它应该是非常简单的东西,但是对我来说没有意义。

1 个答案:

答案 0 :(得分:0)

为子路由根设置索引路由,然后在匹配子路由时呈现其他组件。否则,将呈现根组件。像这样的东西:

<Route path=":id/person" >
    <IndexRoute component={Person} />
    <Route path="summary" component={Summary} />
    <Route path="history" component={History} />
</Route>

如果匹配:id/person,则它将呈现Person组件。如果匹配:id/person/summary,则它将呈现摘要组件等

修改

说你的路线呈现Person组件,你的Summary和History组件需要state.App.Items.List作为道具。

import React, {
    Component,
} from 'react';

class Person extends Component {

    render() {
        const { items } = this.props
        return (
            <div className='person-container'>
                <Summary items={items} />
                <History items={items} />
            </div>
        );
    }
}


function mapStateToProps(state) {
    return {
        items: state.App.Items.List,
    }
}
export default connect(mapStateToProps, null)(Person)

这是你想要做的吗?