我发现我必须重新组织我的路由,从Reaction-Router-Dom v5切换到V6.
我有一条外部路由:
<Route
path="/abc/product/:skuType/:skuPage?"
element={
<PrivateRoute>
<ProductRoutesStructure />
</PrivateRoute>
}
/>
但我的路由都不匹配.所以我不确定如何匹配.例如,在一条路由中,它看起来是这样的:'abc/product/1234/converse'
我正在做这件事:
export const ProductRoutesStructure = () => (
<Routes key="productRoutes">
<Route
path={`/abc/product/:skuType/:skuPage(${Types.CONVERSE})`}
element={<SneakerPage />}
/>
<Route
path={`/abc/product/:skuType/:skuPage(${Types.PANTS})`}
element={<PantsPage />}
/>
<Route path="*" element={<GenericPage />} />
</Routes>
)
问题是,skuType
和skuPage
必须是动态的,就像在这element
个组件中一样,因为我达到了某些API.我只是真的需要在skuPage
号公路上匹配一下.
我想我遗漏了一些子页的细微差别.我试着只匹配"Types.CONVERSE",但这是不可行的,它总是缺省为最后一位"*"
-all-all路由.
这正是我所期待的,这在v5中非常有效,因为这是我使用的实际代码(路径不同/名称).但完全一样.效果很好,但V6,不行.
因此,如果用户转到"www.myDomain/abc/product/male/converse"
我预计这将与这条路由相匹配:
<Route
path={`/abc/product/:skuType/:skuPage(${Types.CONVERSE})`}
element={<SneakerPage />}
/>
如果用户达到"www.myDomain/abc/product/female/pants"
它将匹配:
<Route
path={`/abc/product/:skuType/:skuPage(${Types.PANTS})`}
element={<PantsPage />}
/>
但让我们让它发挥作用吧.我在ProductRoutesStructure
英里内更改路由没有问题,但我try 了许多组合,但没有一种组合匹配.
请注意,我确实需要skuType
和skuPage
对子组件/页面可用,这就是为什么我在基本路由中需要它.