reactjs react-router react-router-v4

reactjs - Rutas anidadas que no se procesan con React Router v4



react-router react-router-v4 (1)

El motivo es muy obvio. para su ruta en main.js, ha especificado la ruta de ruta del componente Public con la exact path=''/'' exacta exact path=''/'' y luego, en el componente público, está haciendo coincidir las otras Routes . Entonces, si la ruta de la ruta es /signup , al principio la ruta no es exacta, por lo que el componente Public no se representa y, por lo tanto, no lo harán las subrutas.

Cambie la configuración de su ruta a la siguiente

main.js

const Main = () => { return ( <main> <Switch> <Route path=''/'' component={Public} /> <Route path=''/admin'' component={Admin} /> </Switch> </main> ); }; export default Main

public.js

const Public = () => { return ( <Switch> <Route exact path=''/'' component={Greeting} /> <Route path=''/signup'' component={SignupPage} /> <Route path=''/login'' component={LoginPage} /> </Switch> ); };

Además, cuando especifique las rutas anidadas, estas deben estar relacionadas con la ruta principal, por ejemplo, si la ruta principal es /home y luego en la ruta secundaria que desea escribir /dashboard . Debería escribirse como

<Route path="/home/dashboard" component={Dashboard}

o mejor

<Route path={`${this.props.match.path}/dashboard`} component={Dashboard}

Estoy tratando de agrupar algunas de mis rutas junto con React Router v4 para limpiar algunos de mis componentes. Por ahora solo quiero agrupar mis rutas no iniciadas y mis rutas de administrador agrupadas, pero lo siguiente no funciona.

main.js

const Main = () => { return ( <main> <Switch> <Route exact path=''/'' component={Public} /> <Route path=''/admin'' component={Admin} /> </Switch> </main> ); }; export default Main;

public.js

const Public = () => { return ( <Switch> <Route exact path=''/'' component={Greeting} /> <Route path=''/signup'' component={SignupPage} /> <Route path=''/login'' component={LoginPage} /> </Switch> ); }; export default Public;

El componente Saludo se muestra en "localhost: 3000 /", pero el componente SignupPage no se muestra en "localhost: 3000 / signup" y el componente de inicio de sesión no se muestra en "localhost: 3000 / signup". Mirando las herramientas React Dev estas dos rutas devuelven Null.