Estoy llamando a una función que usa el estado, pero el estado que se usa en la función es el estado anterior, aunque si usa el depurador de reacción en Chrome, muestra el estado nuevo.
const [somevalue,setsomevalue] = useState("newstate") function myfunction() { console.log(somevalue) } myfunction()producción:
oldstateEstaba pensando en usar forceUpdate() pero estoy usando un componente sin clases.
const CauseCodeChangeHandler = (e) => { setSelectedCauseCode(e.target.value); }; const serQtyChangeHandler = (e) => { if (SelectedCauseCode == "CUS") { } else if (SelectedCauseCode == "OPS") { } else if (SelectedCauseCode == 'OOW') { } }mi componente:
<ServiceSelectInput changeHandler={CauseCodeChangeHandler}/>Está usando el antiguo CauseCode, no uno que acabo de seleccionar.
Este es el problema del cierre obsoleto y es algo queuseCallback está diseñado para abordar:
import {useCallback, useState} from 'react'; function Component () { const [someValue, setSomeValue] = useState('newstate'); // This will make sure that `myFunction` is recreated // every time that `someValue` changes const myFunction = useCallback(() => console.log(someValue), [someValue]); // ...rest of component }