React Router V4 - 无法在道具

时间:2017-12-10 21:33:18

标签: reactjs react-router react-router-v4

我正在尝试创建简单的React-Redux-Router V4应用。到我的一个组件的路由使用url param。在我的Route组件中,我已经传递了render道具,这是一个返回组件的匿名函数。像这样:

<Route key="post" path="/post/:id" render={() => <Post/>} />

我使用这个道具而不是component道具:

<Route key="post" path="/post/:id" component={Post} />

因为我无法使用component道具进入渲染组件。问题是,使用component道具,您可以使用props.match.params.name,它将包含我需要的确切参数。使用render组件时无法使用此功能。

我可以使用window.location.href,但感觉很脏。

谢谢!

2 个答案:

答案 0 :(得分:4)

matchlocationhistory道具会传递到您的render函数中。

示例:

<Route key="post" path="/post/:id" render={({ match }) => <Post name={match.params.name}/>} />

文档:https://reacttraining.com/react-router/web/api/Route/Route-props

答案 1 :(得分:0)

您需要先导入此

import { withRouter } from 'react-router-dom';

之后,最后导出组件,如下所示。 “用户”是类组件名称

export default (withRouter(User));

现在,如果您要打印该值,则会得到一个响应。

constructor(props) {
        super(props);
        console.log('Props', this.props);
    }

快乐编码