React-router:如何将 "match" 对象传递到声明为 ES6 class 的组件中?
React-router : how to pass "match" object into a component declared as an ES6 class?
我是 react-router (v4) 的新手,我一直在学习教程,直到出现这个小问题:
此代码运行良好
class App extends Component {
render() {
return (
<Router>
<div>
<ul>
<li><Link to="/link/value1" className="nav-link">Value1</Link></li>
<li><Link to="/link/value2" className="nav-link">Value2</Link></li>
<li><Link to="/link/value3" className="nav-link">Value3</Link></li>
</ul>
<hr/>
<Route path="/link/:id" component={Generic}/>
</div>
</Router>
);
}
}
我定义了一条到 /link/:id 的路由,有 3 links 到它。然后我像这样声明我的 "Generic" 组件(作为一个函数):
const Generic = ({ match }) => (
<div className="wrapper">
<div className="section">
<div className="container">
<h3>Menu : {match.params.id}</h3>
</div>
</div>
</div>
)
这按预期工作,没问题。但是现在,我想用 ES6 class 语法声明我的组件,如下所示:
class Generic extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div className="wrapper">
<div className="section">
<div className="container">
<h3>Menu : {this.props.params.id}</h3>
</div>
</div>
</div>
);
}
}
这里我有一个错误:无法读取未定义的 属性 'id'
如何使用 ES6 class 方法访问 "match.params.id" 属性?
感谢您的帮助。
使用{this.props.match.params.id}
如果您需要将一些道具传递给组件,请使用这种方法:(例如)
<Route
path='/home'
render={(props) => <Home {...props} user = {this.state.user} />}
/>
在目标组件中,您现在可以使用 this.props.user
& this.props.match.params.id
访问 prop 和 router 参数
我是 react-router (v4) 的新手,我一直在学习教程,直到出现这个小问题:
此代码运行良好
class App extends Component {
render() {
return (
<Router>
<div>
<ul>
<li><Link to="/link/value1" className="nav-link">Value1</Link></li>
<li><Link to="/link/value2" className="nav-link">Value2</Link></li>
<li><Link to="/link/value3" className="nav-link">Value3</Link></li>
</ul>
<hr/>
<Route path="/link/:id" component={Generic}/>
</div>
</Router>
);
}
}
我定义了一条到 /link/:id 的路由,有 3 links 到它。然后我像这样声明我的 "Generic" 组件(作为一个函数):
const Generic = ({ match }) => (
<div className="wrapper">
<div className="section">
<div className="container">
<h3>Menu : {match.params.id}</h3>
</div>
</div>
</div>
)
这按预期工作,没问题。但是现在,我想用 ES6 class 语法声明我的组件,如下所示:
class Generic extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div className="wrapper">
<div className="section">
<div className="container">
<h3>Menu : {this.props.params.id}</h3>
</div>
</div>
</div>
);
}
}
这里我有一个错误:无法读取未定义的 属性 'id'
如何使用 ES6 class 方法访问 "match.params.id" 属性?
感谢您的帮助。
使用{this.props.match.params.id}
如果您需要将一些道具传递给组件,请使用这种方法:(例如)
<Route
path='/home'
render={(props) => <Home {...props} user = {this.state.user} />}
/>
在目标组件中,您现在可以使用 this.props.user
& this.props.match.params.id