DrS*_*an1 5 javascript reactjs react-router react-router-v4 react-router-dom
因此,在 react-router v4 中,我的路由如下所示:
<Route path="/suppliers/:id?" component={Suppliers} />
Run Code Online (Sandbox Code Playgroud)
我将一个可选的“id”参数传递给我的供应商组件。这没有问题。
对于后代,这是我的链接: <Link to="/suppliers/123">Place Order</Link>
然后,在我的组件中,我这样引用参数:
<p>{this.props.match.params.id}</p>
这有效,但我的 linter 给了我以下错误: [eslint] 'match' is missing in props validation (react/prop-types)
出于这个原因,我将 propTypes 定义为:
Suppliers.propTypes = {
match: PropTypes.shape({
params: PropTypes.shape({
id: PropTypes.number,
}).isRequired,
}).isRequired,
};
Run Code Online (Sandbox Code Playgroud)
但感觉就像我写的样板代码比我可能需要的要多。我的问题是,是否有更好的方法来定义我的组件中的 propTypes 以避免 linter 错误?此外,这种解决方案似乎不可持续,例如,如果 props.match 属性更改它将中断。或者我这样做正确吗?
提前致谢。
您的代码没问题,但您也可以将 proptypes 定义为 object。
match: PropTypes.object.isRequired
Run Code Online (Sandbox Code Playgroud)
如果有一天你需要其他道具,比如match, location, history. 你可以这样定义。
Suppliers.propTypes = {
match: PropTypes.object.isRequired,
location: PropTypes.object.isRequired,
history: PropTypes.object.isRequired
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
790 次 |
| 最近记录: |