Как остановить возвращение состояния в исходное состояние после каждого вызова useEffect? - PullRequest
1 голос
/ 21 июня 2019

В моем customHook у меня есть обработчик события onchange, который устанавливает состояние values выбранного элемента в раскрывающемся меню.Затем, основываясь на состоянии values, я хочу получать некоторые данные через каждые несколько секунд в моем useEffect.Однако после каждого вызова useEffect вместо текущего состояния вызывается начальное значение состояния values.

Я пытался использовать useRef, как в коде, чтобы получить текущее значение, но он по-прежнему возвращает начальное значение.значение.

const [values, setValues] = useState({
        name: "",
        myid: "my-id"
    });

const valuesRef = useRef(values)

const [waitState, setWait] = useState(0) 

//state changers
function handleChange(event, id) {
    setValues({
          ...values,
          name: event.target.value,
          myid: id.props.id,
    });
}

useEffect(() => {         
    valuesRef.current = values

    // logs twice, the first log returns the current state, which I want, 
    // the second logs the initial state, which is useless to me
    console.log(values) 

    let wait = () => {
        setTimeout(() => setWait(waitState+1), 10000)
    }

    async function fetchData() {
        wait()
        //fetch some data
    }

    fetchData()
    }, [waitState, values])}

Я просто ожидаю, что он вернет текущее значение values состояние

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...