【发布时间】:2019-04-14 06:26:10
【问题描述】:
我正在将 React Native 中的扫雷应用程序作为个人项目来尝试和学习这些概念。我遇到的问题是尝试同时更新多个子对象。我不确定这是否是最佳做法。
我有 3 个组件游戏 > 网格 > 单元格。 Game 组件负责游戏的逻辑,例如计时器/获胜条件/失败条件。网格是单元格的集合,它决定了每个单元格应该是什么。
游戏组件:
render() {
return (
<Grid
action={this.props.action}
firstClick={this.state.firstClick}
/>
);
}
我将状态 firstClick 传递给等于 true 的网格组件。这意味着当我点击第一个单元格时,我希望它显示所有周围的邻居,而第一次点击等于 true。
网格组件:
_renderItem = ({ item }) => (
<Cell
item={item}
neighbours={this.state.neighbours[item.key.substring(0,1)][item.key.substring(1,2)]}
firstClick={this.props.firstClick}
/>
);
render() {
return (
<FlatList
data={this.state.flatGrid}
renderItem={this._renderItem}
keyExtractor={this._keyExtractor}
numColumns={10}
/>
);
}
网格是一个单元格的平面列表,当它被点击时,网格知道每个单元格的相邻单元格。我遇到的问题是我不确定我应该在哪里更新被点击的单元格及其相邻单元格的状态。我希望将单元格及其所有邻居的 isHidden 状态设置为 false。
应该在grid组件还是cells组件中处理?我不确定如何在不破坏封装的情况下解决这个问题。
这些是我的单元格组件中的状态
constructor(props) {
super(props);
this.state = {
isFlagged: false,
isHidden: true,
value: '',
id: ''
};
提前致谢!
【问题讨论】:
标签: react-native