【发布时间】:2020-01-21 22:05:15
【问题描述】:
完成我在下面的代码中尝试的最佳方法是什么?应用程序无法访问其中定义的路由的 match.params,但我想根据 url 参数将部分状态传递给子组件。我不能使用像 useRouteMatch() 这样的钩子,因为 App 是一个有状态的类组件。我想我可以使用 Route 渲染方法来做到这一点,但看起来 React Router 文档说该方法已被弃用。
那么有没有类似这样的设计模式,让我将所有路由逻辑保留在 App 中,只根据参数将 props 传递给子组件,而不使用 Route 的渲染方法?
class App extends React.Component {
state = { things: this.props.things };
render() {
return (
<Switch>
<Route path='/thing/:thingId'>
<OneThing thing={this.state.things.find(thing => thing.id === match.params.thingId)} />
</Route>
<Route path='/things/:thingTag'>
<MultipleThings things={this.state.things.filter(thing => thing.tag === match.params.thingTag)} />
</Route>
</Switch>
);
}
}
【问题讨论】:
标签: react-router react-router-v4 react-router-dom