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

91
Vistas
React.useCallback no actualiza su implementación cuando se actualiza el estado

Estoy creando una aplicación de tareas pendientes usando ganchos React. La forma en que estoy haciendo esto es creando un contexto para una sola tarea pendiente y un contexto para todas las tareas pendientes. El NewTodoContext sería padre de los nuevos componentes de reacción de tareas pendientes y asumirá responsabilidades como tener un estado interno, proporcionar devolución de llamada para actualizar ese estado, restablecer ese estado y actualizar AllTodosContext una vez que el usuario confirme la formación de tareas pendientes.

El NewTodoProvider se vería como

 function NewTodoProvider({ children }){ const [todo, setTodo] = React.useState(DEFAULT_EMPTY_TODO_STATE); const [ addTodo ] = React.useContext(AllTodosContext); const updateTodo = React.useCallback((todoFragment) => { // setTodo({...todo, ...todoFragment}) }, [todo]); const confirmTodo = React.useCallback(() => { addTodo(todo) }, [todo]); return ( <NewTodoContext.Provider value={{ todo, updateTodo, confirmTodo }}> { children } </NewTodoContext.Provider> ) }

AllTodosProvider se vería como

 function AllTodosProvider({ children }){ const [todos, setTodos] = React.useState(); const addTodo = React.useCallback((todo) => { setTodos([...todos, todo]); },[todos]); return ( <AllTodosContext.Provider value={{ todos, addTodo }}> { children } </AllTodosContext.Provider> ) }

y el árbol React sería como

 <AllTodosProvider> <DifferentComponents /> <NewTodoButton /> <DifferentComponents /> </AllTodosProvider> // NewTodoButton would open up into <NewTodoProvider> <SomeFormComponent /> </NewTodoProvider>

Ahora llegando al problema al que me enfrento. Como puede ver, confirmTodo está envuelto en useCallback con todo como dependencia para que tenga el estado más reciente de NewTodoProvider, pero ese no parece ser el caso. Cuando se llama a confirmTodo, parece recuperar el estado predeterminado, lo que sugiere que su implementación se mantuvo sin cambios a pesar de los cambios de estado. ¿Que me estoy perdiendo aqui?

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