React Router v4 params

时间:2017-07-04 11:42:36

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

我正在使用使用React Router v3的React教程。虽然我使用的是React Router v4。我将一个名为id的参数从名为Root的组件传递到另一个名为User的组件。

export class Root extends  React.Component {
    render() {
        return(
            <div className="container">
                <div className="row">
                    <div className="col-xs-10 col-xs-offset-1">
                        <Header />
                    </div>
                </div>
                <div className="row">
                    <div className="col-xs-10 col-xs-offset-1">
                        <hr/>
                        <Route exact path="/" component={Home}/>
                        <Route path="/user/:id" component={User}/>
                        <Route path="/home" component={Home}/>
                        {/*{this.props.children}*/}
                    </div>
                </div>
            </div>
        );
    }
}

我正在使用{this.props.match.params.id}获取参数,如下所示。

export class User extends React.Component {

    onNavigateHome() {
        this.props.history.push("/home")
    }

    render() {
        return (
            <div>
                <h3>The User Page</h3>
                <p>User ID: {this.props.match.params.id}</p>
                <button onClick={() => this.onNavigateHome()} className="btn btn-primary">Go home!</button>
            </div>
        );
    }
}

使用教程{this.props.params.id}。我是否以正确的方式使用{this.props.match.params.id}match是什么意思?

1 个答案:

答案 0 :(得分:1)

匹配是路由器路径匹配时路由器v4注入的反应属性。

匹配对象具有以下属性:

  • url - 当前位置的路径名的匹配部分
  • 路径 - 路线的路径
  • isExact-path === pathname
  • params - 包含路径名中值的对象 由path-to-regexp捕获

至于遵循V4的V3教程 - 我不推荐它,因为两个版本之间存在实质性的变化