我上了这个课:
export default class Player {
constructor() {
this.scores = [];
}
// Insert a new score and keep top N
insertScore = (score) => {
this.scores.push(score);
this.scores.sort((a, b) => b - a);
if (this.scores.length > N) this.scores.pop();
};
}
属于组件状态的一部分
export default class Menu extends React.PureComponent {
contructor(props){
super(props);
this.state = {
player: new Player()
}
}
onEndGame(score) {
player.insertScore(score);
}
...
}
由于将数组作为状态的一部分进行更改,因此它在React中非常棘手(如this中所述),在这种情况下insertScore
是“合法”吗?
答案 0 :(得分:1)
您正在直接修改状态(this.state.player.scores
)的嵌套属性,因此不正确。
我会尝试的:
播放器类
insertScore = (score) => {
this.scores.push(score);
this.scores.sort((a, b) => b - a);
if (this.scores.length > N) this.scores.pop();
return this;
};
菜单类
onEndGame(score) {
this.setState({
player: this.state.player.insertScore(score);
});
}