Reactjs 在React(typescript)中使用spread运算符设置状态返回TypeError:传播不可编辑实例的尝试无效

Reactjs 在React(typescript)中使用spread运算符设置状态返回TypeError:传播不可编辑实例的尝试无效,reactjs,typescript,react-hooks,Reactjs,Typescript,React Hooks,尝试使用spread运算符将对象添加到数组时,返回以下错误: TypeError: Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method. 以下是组件中的相关代码: const Component = () => { const object = useObject(

尝试使用spread运算符将对象添加到数组时,返回以下错误:

TypeError: Invalid attempt to spread non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.
以下是组件中的相关代码:

const Component = () => {
        const object = useObject()
        
        const {allObjects, setAllObjects} = useAllObjects();
    
        useEffect(()=> {
            if(object){
                setAllObjects([...allObjects, object])
            }
        }, [object])
    }
来自上下文提供程序的代码

    export type AllObjectsContextType = {
    allObjects: any;
    setAllObjects: (allObjects : any) => void;
}

    export const AllObjectsContext = createContext<AllObjectsContextType>({ allObjects: [], setAllObjects: allObjects => console.warn('no allObjects provider')});
    export const useAllObjects = () => useContext(AllObjectsContext);
导出类型AllObjectsContextType={
所有对象:任何;
SetAllObject:(AllObject:any)=>void;
}
export const AllObjectsContext=createContext({allObjects:[],setAllObjects:allObjects=>console.warn('no allObjects provider'))});
导出常量useAllObjects=()=>useContext(AllObjectsContext);

如何使用TypeScript和SetState将对象/项推送到数组中?

是否可以放置console.log(allObjects);在排列之前检查它的值?console.log(allObjects)返回“undefined”,如果它是在排列之前插入的,我想您现在已经得到了答案,请确保您正确设置了上下文提供程序,
和/或像这样设置allObjects的默认值
常量{allObjects=[],setAllObjects}=useAllObjects()可能复制到@somallg非常感谢,它可以工作。如此简单的解决方案