Quiero actualizar el componente Diagram si hago clic en el Button . tengo la siguiente estructura:
+------+ -Layout|--\ -/+------+ | -/ \ +-----/---+ +----|----+ | Sidebar | | Content | +--|------+ +----|----+ / \ +---|---+ +---|----+ |Button | |Diagram | +-------+ +--------+Si presiono el botón, el diagrama debería actualizarse. Mi única idea de cómo puedo hacer esto es la siguiente:
changeDiagram() en el componente Layout .type de variable nombrada al valor 'barChart'changeDiagram como parámetro a la barra lateral. Si hago clic en el botón, se ejecuta la función changeDiagram.type que está en el componente Diseño como parámetro al componente Content .El problema es que no quiero definir una función que solo sea responsable del Diagrama dentro del Componente de diseño. Además, todos los componentes entre el diseño y el diagrama se procesan, lo cual no es necesario.
¿Cómo resolver este problema? Escuché sobre react-redux. ¿Tengo que usar esto o hay otras soluciones?
La respuesta a esta pregunta está profundamente vinculada a la naturaleza interna de React:
Con esta premisa, comprende que si desea que su botón active una representación del diagrama, necesita que el botón cambie un estado de reacción que se encuentra en el diseño (que es el padre común inferior) o en un componente que es un padre para el diseño. Esta es la razón por la que React vuelve a renderizar con un flujo de arriba hacia abajo, por lo que, por ejemplo, un cambio de estado en la barra lateral volverá a renderizar solo la barra lateral y el botón y no el diseño.
¿Cómo resolver este problema? Escuché sobre react-redux. ¿Tengo que usar esto o hay otras soluciones?
Entonces, esto depende de usted, si planea tener muchos de estos escenarios, sí, probablemente necesite un administrador de estado, Redux, Recoil, Valtio, Zustand, hay muchos de ellos. Lo que se adapte mejor a tu caso depende de muchos factores, solo pruébalos y ve cuál te gusta más.
La única solución sin redux (o API de contexto) está ahí
Si solo desea renderizar el componente necesario, deberá usar redux y su tienda. O tendrás que usar la API de contexto