【发布时间】:2021-08-07 16:37:12
【问题描述】:
我正在通过制作战舰游戏来学习反应。当组件加载时,我创建了一个新对象(板),我将其设置为状态。然后我想映射板本身,它是任何数组。然而,反应说 无法读取未定义的属性板。 通过控制台日志,我发现一开始当页面加载时,playerBoard 是一个空对象,然后才使用 setPlayerBoard 将其设置为给定的对象。 我怎样才能避免这种情况?
App.js 看起来像这样:
const GameControl = () => {
const [playerBoard, setPlayerBoard] = useState({})
//creating the board object when component mounts, setting it as a state
useEffect(() => {
const playerBoard = GameBoard('player');
setPlayerBoard({...playerBoard});
},[])
return (
<div className = 'board-container'>
<div className = "board player-board">
{ //mapping an array
playerBoard.boardInfo.board.map((cell, i) => {
return (
<div className = {`cell player-cell`key = {i}></div>
)
} )
}
</div>
</div>
)
}
【问题讨论】:
标签: javascript reactjs asynchronous react-hooks components