【发布时间】:2020-09-23 04:33:57
【问题描述】:
我正在尝试在 Reactjs 中实现子/嵌套路由,以下是我发现的 2 种嵌套子路由的方法,但父路由可以正常工作,而父组件的子路由则不能。
以下是它的工作原理:
/ => Home Component
/login => Login Component
/register => Register Componet
/product/ => ProductListing Component
/product/2 => ProductDetails Component [Expected but does not work]
/product/2/edit => ProductEdit Component [Expected but does not work]
方法一
以下是我的主要路线文件:
export default function MainRouter() {
return (
<Router>
<Route exact path="/" component={Home} />
<Route exact path="/login" component={Login} />
<Route exact path="/register" component={Register} />
<Route exact path="/product" component={ProductRouter} />
</Router>
);
}
ProductRouter.js 文件中的子路由如下所示
export default function ProductRouter(props) {
console.log(props);
return (
<Switch>
<Route
exact
path={`${props.match.path}/:productId`}
component={ProductDetails}
/>
<Route
exact
path={`${props.match.path}/:productId/edit`}
component={ProductEdit}
/>
<Route exact path={`${props.match.path}`} component={ProductListing} />
</Switch>
);
}
方法二
以下是我的主要路线文件:
export default function MainRouter() {
return (
<Router>
<Route exact path="/" component={Home} />
<Route exact path="/login" component={Login} />
<Route exact path="/register" component={Register} />
<Route exact path="/product/*" component={ProductRouter} />
</Router>
);
}
ProductRouter.js 文件中的子路由如下所示
export default function ProductRouter(props) {
return (
<Fragment>
<Route exact path="/" component={ProductListing} />
<Route
exact
path=":productId"
component={ProductDetails}
/>
<Route
exact
path=":productId/edit"
component={ProductEdit}
/>
</Fragment>
);
}
以下是我检查的链接:
【问题讨论】:
-
parent routes work fine and child routes for Parent component do not怎么样?
标签: javascript reactjs react-router