Converting circular structure to JSON --> starting at object with constructor 'HTMLButtonElement' | property '__reactFiber$eb3i9glrsyt' -> object with constructor 'FiberNode' --- property 'stateNode' closes the circle TypeError: Converting circular structure to JSON --> starting at object with constructor 'HTMLButtonElement' | property '__reactFiber$eb3i9glrsyt' -> object with constructor 'FiberNode' --- property 'stateNode' closes the circle at JSON.stringify (<anonymous>) at CellClickModal (http://localhost:3001/static/js/bundle.js:2809:20) at renderWithHooks (http://localhost:3001/static/js/bundle.js:65440:22) at updateFunctionComponent (http://localhost:3001/static/js/bundle.js:68322:24) at beginWork (http://localhost:3001/static/js/bundle.js:70034:20) at HTMLUnknownElement.callCallback (http://localhost:3001/static/js/bundle.js:55032:18) at Object.invokeGuardedCallbackDev (http://localhost:3001/static/js/bundle.js:55076:20) at invokeGuardedCallback (http://localhost:3001/static/js/bundle.js:55133:35) at beginWork$1 (http://localhost:3001/static/js/bundle.js:75007:11) at performUnitOfWork (http://localhost:3001/static/js/bundle.js:74254:16)
时间: 2024-01-27 17:05:52 浏览: 284
cyrillic-to-translit-js:用于将 Cyrillic 符号转换为 Translit 的超轻量级 JavaScript 库,反之亦然
这个错误是因为你正在尝试将一个包含循环引用的对象转换成JSON字符串,而JSON.stringify()方法不支持循环引用。在你的代码中,HTMLButtonElement对象和FiberNode对象之间存在循环引用,因此无法转换成JSON字符串。
要解决这个问题,你可以使用第三方库如flatted来处理包含循环引用的对象。flatted是一个支持循环引用的JSON.stringify()和JSON.parse()版本的库,它可以将循环引用的对象转换成字符串,并在解析时还原循环引用。
以下是使用flatted库的示例代码:
```jsx
import flatted from 'flatted';
const myObj = {
button: document.querySelector('button'),
fiber: { stateNode: document.body }
};
const jsonString = flatted.stringify(myObj);
console.log(jsonString);
const myObj2 = flatted.parse(jsonString);
console.log(myObj2);
```
在这个示例中,我们使用flatted.stringify()方法将包含循环引用的对象转换成字符串,然后使用flatted.parse()方法将字符串解析成对象。这样可以避免JSON.stringify()方法的循环引用问题。
阅读全文