Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays useState钩子在setState之后继续返回initailState_Arrays_Reactjs_Setstate_Use State - Fatal编程技术网

Arrays useState钩子在setState之后继续返回initailState

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

我有一个问题,我有一个空数组作为常量的初始值。我想在某些情况发生后将booleons连接到它(cardImgIndex==imgIndex)。问题是,当我想复制前一个状态时,它总是初始([]),我不知道为什么。下面的代码示例:

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初始化您的状态?它没有帮助。@它是一个打字错误,当然应该是([])-仍然不起作用。您可以创建一个小提琴吗