【发布时间】:2021-06-16 08:31:01
【问题描述】:
我在 React Hooks 中使用带有 useContext 的全局状态并得到以下错误:
"Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method."
我想从上下文中访问和更新状态。
我的 App.js:
import { Cart } from "./Cart"
const App = () => {
const [cartTotal, setCartTotal] = useState('0');
return (<BrowserRouter>
<Switch>
<Cart.Provider value={{ cartTotal, setCartTotal }}>
<Route exact path="/" component={Home} />
<Route exact path="/payment" component={Payment} />
</Cart.Provider>
</Switch>
</BrowserRouter >)
}
我的 Cart.js(用于创建上下文):
import { createContext } from "react"
export const Cart = createContext(null) // tried "[[], () => { }]" here instead of null
My Home.js(用于访问上下文):
import { Cart } from '../Cart'
const { cartTotal, setCartTotal } = useContext(Cart)
我现在无法渲染,关于 React 不喜欢的对象,有什么想法吗?
谢谢
【问题讨论】:
-
将 import React from 'react' 添加到每个文件
-
还将 import {useContext} from 'react' 添加到 Home.js
-
还将 import {useState} from 'react' 添加到 App.js。我希望你只是没有在这里粘贴所有导入,因为还有很多其他的错过:)
-
不仅发布了与 useContext 相关的内容,而且已经解决了,但是做得很好。
标签: javascript reactjs global use-context