gpt4 book ai didi

javascript - 使用 map 与 object.assign 更新属性

转载 作者:行者123 更新时间:2023-11-30 20:59:39 24 4
gpt4 key购买 nike

当我使用 redux 时,我必须关心不可变对象(immutable对象),但在纯粹的 react 中,我经常使用 map 更新数组中的属性

handleAgeChangedUser = e => {
const { users, selectedUser } = this.state;

this.setState(
{
users: users.map(o => {
return o.id === selectedUser.id ? selectedUser : o;
})
},
() => {
this.ageInput.value = "";
}
);
};

演示 https://codesandbox.io/s/z358py2y2p

这种方法的局限性是什么?其他替代方法是什么?我记得在没有 es6 的情况下,我必须使用 loadash,或者更糟的是,回到那天我必须找到索引,然后手动循环来完成这个简单的操作。

最佳答案

What's the limitation of this approach and what's other alternative?

有两个方面的问题 - 纯技术和架构。

首先,React 默认执行浅层比较,不建议实现深度相等逻辑(https://reactjs.org/docs/react-component.html#shouldcomponentupdate),这就是为什么 immutable-like 解决方案( immutable.js, seamless-immutable) 允许在不损害性能的情况下解决该问题。

其次,有状态组件本身是一种糟糕的架构解决方案,因为业务逻辑分布在许多组件之间,数据流不是单向的,这与功能方法不兼容。因此,具有不可变提供程序的基于 flux 的解决方案是最好的。

关于javascript - 使用 map 与 object.assign 更新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47257216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com