Saltar al contenido

¿Es posible utilizar la navegación con botones de material-ui con react-router?

Solución:

Si es posible. Necesitas usar el component apuntalar:

import { Link } from 'react-router-dom';

import BottomNavigation from '@material-ui/core/BottomNavigation';
import BottomNavigationAction from '@material-ui/core/BottomNavigationAction';

// ....

<BottomNavigation value={value} onChange={this.handleChange}>
    <BottomNavigationAction
        component={Link}
        to="/signal"
        label="signal"
        value="signal"
        icon={<ShowChart />}
        className={classes.content}
    />
</BottomNavigation>

(los to prop es para React Router’s Link componente)

Esto funciona con cualquier componente Material-UI que herede de ButtonBase.

https://material-ui.com/api/bottom-navigation-action/

Herencia

Las propiedades del componente ButtonBase también están disponibles. Puede aprovechar este comportamiento para apuntar a componentes anidados.

https://material-ui.com/api/button-base/

Accesorios

component – El componente utilizado para el nodo raíz. O una cadena para usar un elemento DOM o un componente.

Solo para agregar a la gran respuesta de @thirtydot, en caso de que el usuario escribe en la búsqueda y visita una página web en particular directamente (que no sea el predeterminado), por ejemplo, “www.yoursite.com/tab2”, en lugar de hacer clic en el segundo botón, esto puede causar una discrepancia entre el sitio que se muestra y el botón BottomNav que está enfocado (generalmente el primer botón).

Aquí esta lo que hice:
solía window.location.pathname para obtener la ruta actual que es ‘/ tab2’ directamente.
Aquí está mi código para mi caso de uso particular …

function BottomNavBar(){
    const pathname = window.location.pathname; // in case user visits the path directly. The BottomNavBar is able to follow suit.
    const [value, setValue] = React.useState(pathname);
    const handleChange = (event, newValue) => {
      setValue(newValue);
    };

    return (
        <BottomNavigation value={value} onChange={handleChange} showLabels={true} >
          <BottomNavigationAction label="home" value="https://foroayuda.es/" icon={<HomeIcon />} component={Link} to="https://foroayuda.es/"/>
          <BottomNavigationAction label="resources" value="/resources" icon={<ResourcesIcon /> } component={Link} to='/resources'/>                
          <BottomNavigationAction label="Q&A" value="/qna" icon={<QnAIcon />}  component={Link} to='/qna'/>
          <BottomNavigationAction label="profile" value="/profile" icon={<ProfileIcon />} component={Link} to='/profile'/>
        </BottomNavigation>
      );
}

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *