Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

82
Vistas
¿Cómo manejar useContext correctamente con cambios frecuentes?

Estoy usando useContext para la administración de estado global con useReducer. Estoy usando WebSocket para recuperar datos de bitcoin cada segundo. Debido a que los datos cambian con frecuencia, mi aplicación se vuelve a procesar cada segundo y tengo cálculos de datos pesados, interfaz de usuario compleja con tablas y etc. Aunque ningún componente es un consumidor de datos de bitcoin, de todos modos, cada componente se vuelve a procesar cada vez que se modifican sus datos.

este es el proveedor de contexto.

 const AppContext = createContext<{ state: InitialStateType; dispatch: Dispatch<ActionType>; }>({ state: initialState, dispatch: () => null, }); const mainReducer: MainReducer = ({btc, common, user }, action) => ({ btc: btcReducer<BTCPayload>(btc, action as BTCReducerActions), user: userReducer<UserPayload>(user, action as UserReducerActions), common: commonReducer<CommonPayload>(common, action as CommonReducerActions), }); const AppProvider: React.FC = ({ children }) => { const [state, dispatch] = useReducer(mainReducer, initialState); return ( <AppContext.Provider value={{ state, dispatch }}> {children} </AppContext.Provider> ); }; export { AppProvider, AppContext };

Y aquí está el envoltorio de la aplicación.

 <AppProvider> <ThemeProvider theme={theme}> <GlobalStyles /> <BrowserRouter> <div className="App"> <AppRoot isBusy={!ready || !isConnected} /> </div> </BrowserRouter> </ThemeProvider> </AppProvider>

He intentado crear proveedores separados, uno para los datos btc y otro para el resto de los datos, pero funciona igual, porque supongo que la razón es que toda la aplicación está dentro de ese proveedor de contexto.

 const AppProvider: React.FC = ({ children }) => { const [state, dispatch] = useReducer(mainReducer, initialState); const appValue = useMemo(() => { return { state, dispatch }; }, [state]); const btcValue = useMemo(() => { return { btc }; }, [btc]); return ( <AppContext.Provider value={appValue}> <BtcContext.Provider value={btcValue}> {children} </BtcContext.Provider> </AppContext.Provider> ); };

Estoy luchando casi 2 días. Necesito empaquetar toda la aplicación con el proveedor porque hay más de 10 componentes que usan datos btc en diferentes rutas.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda