Nasza aplikacja niedawno został zaktualizowany do wersji beta react-router-dom i wszystko było w porządku. Następnie, gdy próbuję zaktualizować do wersji 6.0.2, otrzymuję wiele инвариантных błędów o All component children of <Routes> must be a <Route> or <React.Fragment>
. Jest to związane z tym, że nasze trasy są zdefiniowane w następujący sposób:
Cecha.jsx:
export const FeatureRoutes = () => (
<Routes>
<Route path="/" element={<Feature1 />} />
<Route path="/*" element={<NotFound />} />
</Routes>
);
trasy.jsx:
export const routes = [
{
path: "feature",
component: FeatureRoutes,
},
/* lots of other routes, defined the same way: <Route> wrapped in a component */
];
Aplikacja.jsx:
<Routes>
{routes.map((route) => (
<Route key={route.path} path={`${pathPrefix}/${route.path}/*`}>
<route.component />
</Route>
))}
</Routes>
Teraz to prowadzi do błędu wyżej, bo wewnętrzne trasy (np. FeatureRoutes
) ujęte w funkcjonalny składnik. Próbowałem odzyskać dosłowne JSX, ale potem dostał jeszcze jeden błąd. Nie jestem pewien, jak to naprawić: czy jedyną odpowiedzią całkowicie przepisać to, jak oceniamy nasze trasy? Mamy również kilka tras, które przechowywane są w tle i porównywane z własnymi składnikami-znowu, nie jestem pewien, jak mogę je owinąć, teraz nie wolno mi mieć komponent między trasami i trasy.
Wszelkie porady mile widziane.