当前位置: 首页 > 知识库问答 >
问题:

更新后setState打印前的控制台日志[重复]

巫马自明
2023-03-14
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值。

共有1个答案

和柏
2023-03-14

在浏览器上,console.log允许您交互地检查打印出来的对象。它通过保留对给定对象的引用来实现这一点,当该引用的值发生变化时,控制台将反映这些更新,甚至在过去的日志中也是如此。

因此,您的控制台将显示tableData发生变异后的状态。(感谢Emile Bergeron对此的澄清)。

可以通过记录对象的克隆来避免这种情况,如下所示:

const tableDataCopy = { ...tableData };
console.log(tableDataCopy);
const tableDataCopy = JSON.parse(JSON.stringify(tableData));
console.log(tableDataCopy);
 类似资料:
  • 控制台日志是一个强大的方法,用来检查您的页面或应用程序。让我们从console.log()开始,探索其他高级用法。 TL;DR 使用console.log()进行基本日志记录 使用console.erroe()和console.warn()获取醒目的内容 使用console.group()和console.groupEnd()来分组相关消息,避免混乱 使用console.assert()显示条件语

  • 我正在为我的应用程序使用spring boot,并且我正在使用默认的spring boot日志记录。 是否有任何配置来防止spring boot将日志消息打印到控制台?

  • > 我试图将JSON文件导入变量,但变量中只显示前几个字符 样本。json是200000个字符,当我在控制台上打印变量时,只打印前3756个字符。通过控制台打印的字符是否有任何限制。日志 完整数据保存在样本变量

  • 问题内容: 如何在C中擦除当前打印的控制台行?我正在Linux系统上工作。例如 - 我想在同一行上打印再见,代替您好。 问题答案: 您可以使用VT100转义码。包括xterm在内的大多数终端都支持VT100。要擦除线,此为。在C中,它给出:

  • 在航站楼如何做到这一点?

  • 由来 编码中我们常常需要调试输出一些信息,除了打印日志,最长用的要数System.out和System.err 比如我们打印一个Hello World,可以这样写: System.out.println("Hello World"); 但是面对纷杂的打印需求,System.out.println无法满足,比如: 不支持参数,对象打印需要拼接字符串 不能直接打印数组,需要手动调用Arrays.to