У меня есть функция обратного вызова из объекта таблицы, где я отлаживал некоторые данные и хотел выполнить console.log объекта таблицы до того, как он был обновлен с помощью this.setState(). Теперь я знаю, что this.setState является асинхронным, но я все еще ожидал увидеть журнал перед обновлением, но вместо этого он появился после обновления.
Вот функция обратного вызова:
onCellChange = (tableId, rowIdx, cellIdx) => e => {
const value = parseFloat(e.target.value);
console.log("TableID:", tableId);
console.log(tableData); //This prints the tableData object post-this.setState()
const tableTuple = { rowIdx, cellIdx, value, tableData, tableId };
this.setState({
tableData: updateInput(tableTuple)
});
};
Чтобы проверить это, я закомментировал вызов this.setState и повторил попытку, и console.log() напечатал значение до обновления, как и ожидалось, поскольку оно больше не входит в метод updateInput. Это имеет смысл, но тогда я не уверен, как получить значение console.log перед обновлением.
updateInput
вероятно мутирует Объект. Консоль ссылается на объект и отражает любые изменения, которые он получает. - person Emile Bergeron   schedule 21.11.2019console.log(JSON.stringify(tableData))
- person HMR   schedule 21.11.2019