SELECT W1.column2, W2.column2
FROM words W1
JOIN words W2 ON W1.column1 = W2.column1
其中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 = {}
值正确更新。
答案 0 :(得分:1)
线条
[`${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
})(),
现在,它会在评估后返回基础值。
有没有更好的方法来获得结果?