【发布时间】:2018-07-16 07:10:21
【问题描述】:
我正在使用 React 的 componentDidUpdate 生命周期方法。
我正在尝试确定两个数组是否相同。
我的prevState 数组如下所示:
prevState.players = [
{
name: 'Wayne Rooney',
age: 31
},
{
name: 'Lionel Messi',
age: 29
},
{
name: 'Robbie Fowler',
age: 42
}
];
this.state 数组如下所示:
this.state.players = [
{
name: 'Wayne Rooney',
age: 31
},
{
name: 'Lionel Messi',
age: 29
},
{
name: 'Robbie Fowler',
age: 42
}
];
如你所见,如果你展开下面的 sn-p,它们是不相等的:
let playersOne = [{
name: 'Wayne Rooney',
age: 31
},
{
name: 'Lionel Messi',
age: 29
},
{
name: 'Robbie Fowler',
age: 42
}
];
let playersTwo = [{
name: 'Wayne Rooney',
age: 31
},
{
name: 'Lionel Messi',
age: 29
},
{
name: 'Robbie Fowler',
age: 42
}
];
console.log(playersOne == playersTwo)
这是我的反应生命周期代码。
componentDidUpdate(prevProps, prevState) {
if(prevState.players != this.state.players) {
this.updatePlayers(this.state);
}
}
谁能建议确定数组是否相等的最佳方法?
【问题讨论】:
-
JSON.stringify(playersOne) == JSON.stringify(playersTwo) -
@AkashDathan 看起来有人会这样做
-
React 文档建议的一件事是使用不可变数据,因为这样的比较可能很昂贵,但您仍然需要使用来自 lodash 的 _.isEqual 或深度比较单个值
-
查看所有结果here
标签: javascript reactjs ecmascript-6