javascript - 如何将这个对象合并到另一个对象中以在 React 中更新?

标签 javascript reactjs

假设我在 React 中有以下对象:

{
  name: 'John Max',
  plan: { active: true }
}

然后,我有以下对象:

{ fields: { "plan.active": false } }

如何调整此对象以替换当前对象?

因此,在此示例中,plan[active] 将变为 false 而不是 true。这将是唯一的改变。

最佳答案

您可以实现一个简单的函数,通过传递路径来遍历对象,您可以通过在点上分割对象键来获取该路径。

类似这样的事情:

setpath = ([p,...ps], v, o) => ps.length ? setpath(ps, v, o[p]) : o[p] = v


const data = { name: "John Max", plan: { active: true } }
const input = { fields: { "plan.active": false } }

let [path, val] = Object.entries(input.fields)[0]  // path="plan.active", val=false

setpath(path.split("."), val, data)
console.log(data)  // {name: "John Max", plan: {active: false}}

如果您计划在fields下有多个类似路径的字段,并且想要更新对象中的所有这些字段,则可以使用Array.foreach:

Object.entries(input.fields).forEach(([p,v]) => setpath(p.split("."), v, data))

关于javascript - 如何将这个对象合并到另一个对象中以在 React 中更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73890363/

相关文章:

javascript - 执行名称位于数组中的函数

javascript - 为什么我不能使用 jQuery 设置相同的高度和宽度?

reactjs - 调度不改变 redux 状态

reactjs - ReactJS 最流行的后端框架是什么?

javascript - 如何在 map 期间将特定项目推送到新数组中?

javascript - Alexa 技能套件 - AudioPlayer 元数据图像

javascript - 设置访问控制允许来源

javascript - EXT JS 使用列表显示使用表格的值。在表头中重复所有行

reactjs - 使用 D3 可滚动 X 轴 React BarChart

javascript - react 得到所有 child 的引用