Глубокое клонирование объекта, у которого есть реагирующий элемент, сломает этот элемент, и вы больше не можете визуализировать этот элемент,
Вот пример, показывающий эту проблему
import React from "react";
import "./styles.css";
import Demo from "./Demo";
export default function App() {
const test = <div>I'm a react element</div>;
console.log("test", test);
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
<Demo obj={{ element: test }} />
</div>
);
}
//Demo.js
import React from "react";
// import cloneDeep from "lodash.clonedeep";
import CloneDeep from "clone-deep";
const Demo = ({ obj }) => {
const newProps = CloneDeep(obj);
console.log(newProps.element);
// console.log("Demo element", newProps.element);
return (
<div>
I'm Demo Component
{newProps.element}
</div>
);
};
export default Demo;
Я также попробовал пару других библиотек глубокого клонирования, но ни одна из них, похоже, не работает в моем случае !, так вы знаете библиотеку, которая делает это? или, может быть, я могу исправить текущую библиотеку клонирования, делая что-то? или, может быть, я могу написать собственное глубокое клонирование, любой совет по этому поводу?
Что я пробовал до сих пор:
1- Использование import CloneDeep from "clone-deep";
, которое приведет к ошибке objects are not valid as a react child
2-Использование import cloneDeep from "lodash.clonedeep";
которая не имеет той же ошибки, что и предыдущая библиотека, но выдает infinity loop, Max Stack
ошибку!
Спасибо.