【发布时间】:2019-01-22 13:32:59
【问题描述】:
我有一个关于 React 以及必须如何更新状态的问题。 假设我们有一个 Players 类,在其状态中包含一个名为 player 的对象数组。我们想更新这个数组中的一个玩家。我会这样做:
class Players extends Component {
state = {
players: []
}
updatePlayer = id => {
const players = this.state.players.map(player => {
player.updated = player.id === id ? true:false;
return player
});
this.setState({players: players});
}
}
但我的同事就是这样做的,而且它也有效:
updatePlayer = id => {
const playerObj = this.state.players.find(item => {
return item.id === id
})
if (playerObj) {
playerObj.updated = true
this.setState({ playerObj })
}
}
React 的 setState 函数会更新玩家数组,而无需明确告知这样做。所以,我有两个问题:
- 是否使用了 find 函数的引用,并使用它来更新玩家数组?
- 是否推荐使用其中一种方法?
谢谢大家的解释!
【问题讨论】:
标签: javascript reactjs setstate