useEffect setData не устанавливает данные, несмотря на новые значения - PullRequest
0 голосов
/ 13 июля 2020

, так что это фрагмент кода

const handleChange = (e, tipo) => {
    console.log(e.target.value);   //0
    console.log(data[tipo]);   //1
    data[tipo] = e.target.value;
    console.log(data[tipo]);    //2
    console.log(data);    //3
    setData(data);
  };

Console.log 2 и 3 сообщают мне, что измененные данные изменились, показывая мне вставленный символ, но когда я выполняю setData, он делает даже не запускать useEffect!

 useEffect(() => {
    console.log("____________________________________");
    console.log(data);
    console.log("____________________________________");
  }, [data]);

Он печатает его только один раз, пока данные запрашиваются.

1 Ответ

1 голос
/ 13 июля 2020

После внесения изменений в данные установите данные следующим образом:

Если данные представляют собой массив:

setDate([...data]);

И это, если данные являются объектом:

setDate({...data});

React будет отслеживать ссылку на данные, а не изменения, которые вы внесли в данные, поэтому, если вы хотите, чтобы ваши изменения повлияли, подумайте о передаче новой ссылки в setData ().

...