【发布时间】:2022-07-26 22:39:09
【问题描述】:
我正在制作一个带有 react 的井字游戏,我将用于更改棋盘的父 setState 函数传递给子组件。
之后,我在父组件 (useEffect(()=> ... , [board])) 中放置了一个 useEffect,以便在此状态更改时执行操作。但是当我在孩子内部使用 setState 时,它什么也没做。下面的 console.log 显示为 true,这可能是 useEffect 没有更新的原因。
function handleClick(_, i:number) {
setBoard(prevBoard => {
const newBoard = board
newBoard[i] = dictIconToValue[icon] as typeof prevBoard[0]
console.log(newBoard == prevBoard)
return newBoard
})
...
}
【问题讨论】:
-
如果新状态和旧状态的值相同,则不会触发重新渲染。顺便说一句,您应该分享更多关于您在父组件中的
useEffect中所做的事情以及如何在子组件中设置board值的信息。这将有助于我们更好地了解您的问题。
标签: reactjs typescript