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

110
Vistas
El objeto pasado cambia cada render

Estoy tratando de definir un proveedor de estado global para una aplicación que estoy creando con react. pero me sigue saliendo el error

El objeto pasado como accesorio de valor al proveedor de Contexto (en la línea 19) cambia cada representación. Para arreglar esto, considere envolverlo en un gancho useMemo

Aquí está mi estructura de archivos. estado.ts

 export default interface State { data: boolean } export const initialState: State = { data: false, }

acción.ts

 type Action = { type: "SET_DATA" value: boolean } export default Action

contexto.ts

 import { Context, createContext, Dispatch } from "react" import Action from "./actions" import State, { initialState } from "./state" const GlobalContext: Context<{ globalState: State dispatch: Dispatch<Action> // eslint-disable-next-line @typescript-eslint/no-unused-vars }> = createContext({ globalState: initialState, dispatch: (_: Action) => {} }) export default GlobalContext

proveedor.tsx

 import * as React from "react" import { ReactNode, ReactElement, useReducer } from "react" import GlobalContext from "./context" import Reducer from "./reducer" import State, { initialState as defaultInitialState } from "./state" export default function GlobalStateProvider({ children, initialState = defaultInitialState, }: { children: ReactNode initialState?: State }): ReactElement { const [globalState, dispatch] = useReducer(Reducer, initialState) return ( <GlobalContext.Provider value={{ dispatch, globalState }}> {children} </GlobalContext.Provider> ) } GlobalStateProvider.defaultProps = { initialState: defaultInitialState, }

Revisé el código varias veces y parece que no puedo entender qué está mal y por qué recibo este error. Si alguien puede explicar con más detalle por qué sucede esto y tal vez una solución, eso sería útil.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Esto no es realmente un error de sintaxis, lo que significa que no romperá la aplicación, sino un error de linting, donde algunos linters están tratando de hacer cumplir los mejores estándares. Puede cambiar la configuración de linter para proporcionar advertencias en lugar de generar errores.

Si desea solucionar esto, puede envolver los valores de contexto en un gancho useMemo como sugiere el linter.

 const globalContextValue = useMemo( () => ({ dispatch, globalState }), [dispatch, globalState] ); return ( <GlobalContext.Provider value={globalContextValue}> {children} </GlobalContext.Provider> )

Tenga en cuenta que existen controversias en torno a esta regla de pelusa, algunos dicen que está desactualizada e innecesaria, por lo que algunos sugerirían desactivar la regla por completo.

about 4 years ago · Juan Pablo Isaza Denunciar
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