Javascript 在React状态下使用原型

Javascript 在React状态下使用原型,javascript,reactjs,prototype,Javascript,Reactjs,Prototype,我试图使用原型使从深度嵌套的对象中查找数据变得更容易。问题是,当我使用lodash的cloneDeep函数时,原型链断了(我非常确定)。我正在使用cloneDeep函数来确保不直接改变状态 在利用项目中的一些代码浪费任何人的时间之前,这是一种好的做法吗?在状态下存储对象时,执行以下操作是正确的还是应该避免原型 const parent={a:{b:{c:null}} const child=Object.create(父级) 父项a.b.c=子项 this.setState({parent})

我试图使用原型使从深度嵌套的对象中查找数据变得更容易。问题是,当我使用lodash的
cloneDeep
函数时,原型链断了(我非常确定)。我正在使用
cloneDeep
函数来确保不直接改变状态

在利用项目中的一些代码浪费任何人的时间之前,这是一种好的做法吗?在状态下存储对象时,执行以下操作是正确的还是应该避免原型

const parent={a:{b:{c:null}}
const child=Object.create(父级)
父项a.b.c=子项
this.setState({parent})
提前感谢您的帮助:)

a)我建议使用typescript而不是proptypes。它更强大、更高效

b) 深度克隆对象不需要lodash。只要做:

constobjecta={name:“Joe”,年龄:44}
const clonedObjectA={…objectA}
//变异克隆对象
clonedObjectA.name=“Paul”,
log(“objectA”,objectA)//原始未触及

log(“clonedObjectA”,clonedObjectA)//新对象发生了变化
我会再次使用任何深度嵌套的抽象作为状态。你的州应该尽可能平坦。嵌套导致了真正的错误代码,更新成为一项艰巨的任务

constructor() {
    this.state = {foo: 'bar', a: 1, b: 2}
}

handleEvent(event) {
    this.setState({ ...this.state, foo: event.target.value })
}

render() {
    const { foo, a, b } = this.state
    // ...
}

但这并不是React前进的方向。我建议看一看最新的发行说明。

{…objectA}
只是一个浅显的副本。有关深入克隆对象的方法,请参见。