Javascript 如何删除对象的引用?

Javascript 如何删除对象的引用?,javascript,json,reactjs,Javascript,Json,Reactjs,我用React钩子管理存储我的状态。当我执行类似这样的操作时 const {state} = useContext(myContext); const CRUD = async () => { state.entity.id = generateId(); state.entity.name = "bla bla"; state.entity.status = true; .... POSTING PROCCESS } 操作完成后,它改变了无减速

我用React钩子管理存储我的状态。当我执行类似这样的操作时

const {state} = useContext(myContext);

const CRUD = async () => {
   state.entity.id = generateId();
   state.entity.name = "bla bla";
   state.entity.status = true;
   .... POSTING PROCCESS       

}
操作完成后,它改变了无减速器的状态。我不明白,我不想改变

我尝试了一些例子来解决这个问题,但没有成功

let clone = {...state.entity}; // not work
var copy = Object.assign({}, state.entity); // not work
const other = {...state.entity}; // not work
//.....or other same thing not work. (const, var, let combination)

“扩展”操作符仅创建对象的浅克隆

您可以这样做:

const clone = JSON.parse(JSON.stringify(state.entity))
这将复制您的状态,但不会复制其中的任何对象方法或原型


因此,当改变状态时,您应该始终使用
setState()

您可以始终使用JSON.parse(JSON.stringify(object))进行“深度”复制;但请注意,它将删除(因为它无法创建json)函数或其他组件。因此,如果您有类似state.entity.myFunc=function()={}的内容。。。那它就丢了。或者如果你有state.entity.myCustomEditor=那么它也会丢失。但是我要说的是,它应该只使用像{…state.entity}这样的浅拷贝。结尾的行“不起作用”是怎么回事?这些对我来说都很好,假设您想在修改它并将其发送到服务器之前创建一个副本,所有这些都不需要修改state.entity。@Aaron我也这么说。好吧,祝您好运;)