gpt4 book ai didi

javascript - 在组件中处理通过 react-router 传递的参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:41:20 25 4
gpt4 key购买 nike

因此,在 react-router v4 中,我的路线如下所示:

      <Route path="/suppliers/:id?" component={Suppliers} />

我将一个可选的“id”参数传递给我的 Suppliers 组件。这没问题。

为了后代,这是我的链接:<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,
};

但感觉我写的样板代码比我可能需要的要多。我的问题是,是否有更好的方法在我的组件中定义我的 propTypes 以避免 linter 错误?此外,这个解决方案似乎是不可持续的,例如,如果 props.match 属性发生变化,它将中断。还是我这样做正确?

提前致谢。

最佳答案

您的代码没问题,但您也可以将 proptypes 定义为对象。

match: PropTypes.object.isRequired

如果有一天您需要其他 Prop ,例如匹配、位置、历史。你可以这样定义它。

Suppliers.propTypes = {
match: PropTypes.object.isRequired,
location: PropTypes.object.isRequired,
history: PropTypes.object.isRequired
}

关于javascript - 在组件中处理通过 react-router 传递的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46091166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com