Arrays useState钩子在setState之后继续返回initailState
我有一个问题,我有一个空数组作为常量的初始值。我想在某些情况发生后将booleons连接到它(cardImgIndex==imgIndex)。问题是,当我想复制前一个状态时,它总是初始([]),我不知道为什么。下面的代码示例:Arrays useState钩子在setState之后继续返回initailState,arrays,reactjs,setstate,use-state,Arrays,Reactjs,Setstate,Use State,我有一个问题,我有一个空数组作为常量的初始值。我想在某些情况发生后将booleons连接到它(cardImgIndex==imgIndex)。问题是,当我想复制前一个状态时,它总是初始([]),我不知道为什么。下面的代码示例: const [correctPlacementMap, setCorrectPlacementMap] = useState<any>([]) const handleDrop = (e: React.DragEvent<HTMLDivElemen
const [correctPlacementMap, setCorrectPlacementMap] = useState<any>([])
const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {
const {draggedCardID, cardImgIndex} = JSON.parse(e.dataTransfer.getData('card'));
if (isEmpty) {
if (cardImgIndex === imgIndex) {
setCorrectPlacementMap((prevState: boolean[]) => [...prevState, true]);
e.target.appendChild(document.getElementById(draggedCardID))
} else {
setCounter((prevState: number) => prevState + 10);
e.target.appendChild(document.getElementById(draggedCardID))
}
}
};
const[correctPlacementMap,setCorrectPlacementMap]=useState([])
常量handleDrop=(e:React.DragEvent)=>{
const{draggedCardID,cardImgIndex}=JSON.parse(e.dataTransfer.getData('card');
如果(我是空的){
if(cardImgIndex==imgIndex){
setCorrectPlacementMap((prevState:boolean[])=>[…prevState,true]);
e、 target.appendChild(document.getElementById(draggedCardID))
}否则{
setCounter((prevState:number)=>prevState+10);
e、 target.appendChild(document.getElementById(draggedCardID))
}
}
};
它正确设置数组(第一次删除后为[true],但另一次删除后,prevState为[]
handleDrop方法在drop事件时被触发。这是否有助于
设置更正位置映射([…更正位置映射,true])
?为什么您要用{}
而不是[]
?@Naren初始化您的状态?它没有帮助。@它是一个打字错误,当然应该是([])-仍然不起作用。您可以创建一个小提琴吗