gpt4 book ai didi

javascript - Immutable.js 有条件地更新 Map

转载 作者:行者123 更新时间:2023-11-30 19:48:28 24 4
gpt4 key购买 nike

const state = fromJS({
poolName: {
poolNameCost:
poolNamePercentage:
poolNameShare:
}
})

其中 poolName 因操作而异。

如果其中任何一个更新,我必须更新所有属性 poolNameCost、poolNamePercentage、poolNameShare

我愿意

const { poolName, val, fieldSuffix, initialCost, initialShare } = action.payload;
state.update(`${poolName}`,
items => ({
...items,
[`${poolName}Cost`]() {
if (suffix === 'Share') return (val / initialCost) * initialShare;
if (suffix === 'Percentage') return (val / initialCost) * 100;
return val
},
[`${poolName}Share`]() { //.....// },
[`${poolName}Percentage`]() { //.....// },
})
)

我得到一个空对象 poolName = {}。为什么会这样?

上面的代码是下面代码的重构版本,效果很好。

代码,

 (suffix === 'Cost') &&
state.update(`${poolName}`,
items => ({
...items,
[`${poolName}Share`]: (val / initialCost) * initialShare,
//...similarly for other sibling property of `Share` in `poolName`...//
})
)

值正确更新。

最佳答案

线条

[`${poolName}Cost`]() {
if (suffix === 'Share') return (val / initialCost) * initialShare;
if (suffix === 'Percentage') return (val / initialCost) * 100;
return val
},

在调用时在代码中返回函数本身。所以我把它们改成了 IIFE,像这样

[`${poolName}Cost`]: (function() {
if (suffix === 'Share') return (val / initialCost) * initialShare;
if (suffix === 'Percentage') return (val / initialCost) * 100;
return val
})(),

现在它在评估后返回基础值。

有没有更好的方法来实现这个结果?

关于javascript - Immutable.js 有条件地更新 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54723205/

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