我需要将数组中的第一个元素作为最后一个推送。
问题是它是对象的链接。
如何使用immutability helper。
我现有的代码如下。
state = {
table: [['', '', '', ''],
['', '', '', ''],
['', '', '', ''],
['', '', '', '']],
}
appendRow = () => {
let newTable = deepcopy(this.state.table);
newTable.push(this.state.table[0].slice())
this.setState({ table: newTable });
}

我对不变性帮助者的建议我建议不好
appendRow = () => {
this.setState({ table: update(this.state.table, { $push: [this.state.table[0].slice()] }) });
}

因为我再次使用slice()
。
如何做得更好?
答案 0 :(得分:0)
我不知道immutability.js
但是为了这个目的,您可以使用reduceRight
,它是标准库中的pure function
,如下所示:
table.reduceRight((a,e,i) => { i === 0 ? a.push(e) : a.unshift(e); return a }, []);
在您的示例中插入此内容:
appendRow = () => {
this.state.table.reduceRight((a,e,i) => { i === 0 ? a.push(e) : a.unshift(e); return a }, []);}