函数handleSave
@bind
private handleSave() {
const { coin, balance } = this.state;
console.log('coin', coin);
console.log('balance', balance);
const updatedCoin = Object.assign({
...coin,
position: balance
}, coin);
console.log('updatedCoin', updatedCoin);
this.props.updateCoinPortfolio(updatedCoin);
this.props.toggle(false);
}
在第一个 console.log coin
是以下对象:
{
availableSupply: "17572412",
currency: "BTC",
exchange: "",
exchange_base: "",
marketCap: 67651096742.34,
name: "Bitcoin",
percentage: 100,
position: 1,
price: "3849.84695",
value: 3849.84695
}
并且余额= 2
在此日志中接下来:console.log('updatedCoin', UpdatedCoin);
我希望硬币的位置现在是 2
而不是 1
。但它仍然是1
?
Object.assign 部分:
const updatedCoin = Object.assign({
...coin,
position: balance
}, coin);
最佳答案
你混淆了隐喻。您或者想要分配
:
const updatedCoin = Object.assign({}, coin, {position: balance});
或属性(property)传播:
const updatedCoin = {
...coin,
position: balance
};
您的分配
代码不起作用,因为您将硬币
放在您更新的对象之后,因此位置
被coin
覆盖。 (使用分配
- 并传播 - 最后一个获胜。)
关于javascript - 为什么 Object.assign 没有替换我的新对象中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55010049/