- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是 JS 新手。我正在尝试打印我的 console.log 中的值。我收到以下错误:
VM1374:32 Uncaught TypeError: Converting circular structure to JSON(…)
我的代码如下:
console.log("this.props.children[this.state.selected]---->" + JSON.stringify(this.props.children[this.state.selected]));
最佳答案
这是一个很常见的问题。 Converting circular structure to JSON(...)
被抛出是因为您试图打印出一个最终通过其属性之一引用自身的对象。
这是一个 JSFiddle解决此问题的最简单方法之一:
var a = {
b: null
};
// Prints fine
console.log(JSON.stringify(a, null, 3));
a.b = a;
// Throws an error, as a.b *is* a
console.log(JSON.stringify(a, null, 3));
当你调用JSON.stringify
时,浏览器会像一棵大树一样遍历你的对象,像 Twig 一样向下遍历每个属性,并将它能转换成字符串。在上面的示例中,属性 b
最初为 null,这导致“字符串化”成功。当我们将 a.b
设置为 a
本身时,我们现在得到这种树:
a
|-b: a
|-b: a
|-b: a
...
这种结构循环是因为对象引用了自己。无法将其写成 JSON,因为它会永远持续下去,因此会引发错误。
对于您的特定问题,这发生在 React 中,因为 React 对象引用它们的父对象,引用它们的子对象,引用它们的父对象,引用它们的子对象......它会一直持续下去。
因此,出于这个原因,您不能在示例中的 this
或 this.props
上使用 JSON.stringify
(this .props
的属性 children
对这个问题负有部分责任)。
您会注意到您可以将 this.state
字符串化,因为这是一个不引用任何其他 React 对象的普通对象:
> JSON.stringify(this.state);
"{"selected":0}"
编辑:对你来说最好的可能是没有 JSON.stringify
的 console.log
:
console.log("this.props.children[this.state.selected]---->", this.props.children[this.state.selected]);
您可以将多个参数添加到 console.log
并用逗号分隔它们,然后浏览器控制台本身应该以可查看的格式打印它。
关于javascript - VM1374 :32 Uncaught TypeError: Converting circular structure to JSON(…),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40499339/
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭11 年前。 Improve th
我是 Azure 平台的初学者。我在公司的 Azure 基础架构中遇到了虚拟机问题,在我从操作系统重新启动后,该虚拟机无法启动,我尝试了所有其他故障排除功能,但仍遇到以下问题: 重新部署选项。 我想确
我在 Mac 上使用 XAMPP-VM,我尝试使用 xampp 管理器上显示的地址通过 ssh 连接到 VM: 192.168.65.2 我意识到我不知道 VM 的 root 密码和任何 ssh-ke
我知道你可以在 Dalvik 的 VM 中运行几乎所有的 Java,而你可以在 Java 的 VM 中运行,但是限制不是很清楚。有没有人遇到任何主要的绊脚石?有什么大图书馆有问题吗?任何编译成 Jav
Azure VM 备份失败,出现错误 - GuestAgentSnapshotTaskStatusErrorAzure 备份服务无法与 VM 代理通信以触发快照(以进行备份),因为 VM 代理可能处于
我想知道当虚拟机停止时,虚拟机的软件成本部分是否收费。我想运行 Azure SQL VM Enterprise。 VM 每月的软件成本为“1,116 美元/月”。 如果我停止使用,我仍需支付该软件的费
有 2 台安装了 Proxmox (Proxmox-ve 4.2) 的物理服务器,每台都处理几个虚拟机和容器。这些服务器(几乎)完全隔离,它们之间没有集群/共享存储/附加存储等。 已在 proxmox
我想知道当虚拟机停止时,虚拟机的软件成本部分是否收费。我想运行 Azure SQL VM Enterprise。 VM 每月的软件成本为“1,116 美元/月”。 如果我停止使用,我仍需支付该软件的费
有 2 台安装了 Proxmox (Proxmox-ve 4.2) 的物理服务器,每台都处理几个虚拟机和容器。这些服务器(几乎)完全隔离,它们之间没有集群/共享存储/附加存储等。 已在 proxmox
Parrot Virtual Machine 有什么好处?对于最终用户(软件开发人员)? 例如,如果我可以直接针对 Perl 或 Python 进行编程,我为什么还要在 Parrot 下为它们编程呢?
例如,Python 和 Java 有一个 VM,而 C 和 Haskell 没有。 (如果我错了,请纠正我) 想了想线路两边都有哪些语言,找不到原因。 Java 在很多方面都是静态的,而 Haskel
我知道虚拟机镜像有两种类型:通用型和专用型。 如果操作系统已通用化/取消配置,则必须关闭虚拟机才能将其捕获为 VM 镜像。一旦 VM 被捕获为 VM 镜像,该虚拟机将自动删除。 如果操作系统是专用,则
我知道虚拟机镜像有两种类型:通用型和专用型。 如果操作系统已通用化/取消配置,则必须关闭虚拟机才能将其捕获为 VM 镜像。一旦 VM 被捕获为 VM 镜像,该虚拟机将自动删除。 如果操作系统是专用,则
背景信息 我正在开发一种支持网络的嵌入式设备,旨在与服务器进行通信。因为此服务器将运行 Linux(但我需要 Windows 工具进行开发),我正在运行带有 Ubuntu Server 14.04 的
我有一个 Azure 云服务 mywebapp.cloudapp.net,它由两个 Azure VM - mywebappvm1 和 mywebappvm2 组成。两个虚拟机位于同一可用性集中并具有相
有什么方法可以在不重新启动虚拟机的情况下调整现有虚拟机的大小,还是总是像停止虚拟机然后重新启动一样? 据我了解,我可以更改虚拟机的大小而无需重新启动它。请指导我,因为我不希望虚拟机在调整大小时出现任何
我是 Azure 新手。我正在尝试使用 powershell 在 Azure 中创建资源。 我的要求是从虚拟机创建镜像。我遵循了以下方法: 流程 1:手动执行 通用化虚拟机:登录虚拟机 -> 打开命令
我创建了虚拟网络,并且想要将新虚拟机部署到该虚拟网络。网络 我尝试使用以下命令创建虚拟机: az vm create --resource-group myGroup --name VMTestNet
上下文 作为一个大学项目,我们希望更改 pharo 虚拟机以使用对象表,看看会发生什么。 我们使用pharo-vm clone from github和VMMaker。构建虚拟机工作正常。 首先,我们
我是巴拿马型的新手,刚刚安装,但收到以下错误消息: A different VM with name panamax-vm has been created already. 我试图通过使用 pana
我是一名优秀的程序员,十分优秀!