tengo 2 funciones Uno está siendo llamado cuando escribo en la entrada de búsqueda. El segundo está siendo llamado cuando selecciono una categoría. El valor predeterminado para la búsqueda es '' y para las categorías seleccionadas es nulo. Sin embargo, cuando escribo por primera vez o hago clic en la categoría por primera vez. La primera vez que se llama a las funciones con los valores predeterminados de ambos estados. Parece que siempre estoy 1 paso antes del correcto.
const onTextChanged = (e: ChangeEvent<HTMLInputElement>) => { const value = e.target.value; setIsComponentVisible(true); setSearch(value); }; const selectCategory = async (category) => { const { id } = category; if (!selectedCategories || !selectedCategories[id]) { setCategories((prevState: any) => ({ ...prevState, [id]: category })); } else { setSelectedCategories((prevState: any) => { const { [id]: undefined, ...rest } = prevState; return rest; }); } };¿Qué está mal y cómo se puede solucionar?
Si está tratando de console.log() sus estados, justo después de que se llame a su setter de estado, su estado probablemente no se actualizará para entonces porque React establece el estado de forma asíncrona. useEffect puede ayudarlo con eso, puede console.log() su estado cada vez que cambia. Algo como esto:
useEffect(() => { console.log(search) }, [search])