【发布时间】:2020-11-06 19:25:47
【问题描述】:
我尝试运行此代码,但它给了我一个运行时错误提示
TypeError: Object is not iterable (cannot read property 符号(Symbol.iterator))
这里是代码。
import React, { useContext} from "react";
import { GlobalContext } from '../GlobalState';
const MediaCard = ({ songs, categotyTitle }) => {
const [{}, dispatch] = useContext(GlobalContext);
const setCurrentVideoSnippet = data => {
dispatch({ type: "setCurrentVideoSnippet", snippet: data });
};
export default MediaCard;
错误指向这行代码const [{}, dispatch] = useContext(GlobalContext);
GlobalState 代码
import React, { useReducer } from "react";
export const GlobalContext = React.createContext();
const initialState = {
currentVideoSnippet: {},
};
const reducer = (state, action) => {
switch (action.type) {
case "setCurrentVideoSnippet":
return {
...state,
currentVideoSnippet: action.snippet
};
default:
return state;
}
};
export const GlobalState = props => {
const globalState = useReducer(reducer, initialState);
return (
<GlobalContext.Provider value={globalState}>
{props.children}
</GlobalContext.Provider>
);
};
【问题讨论】:
-
你需要实现一个迭代器。或者您可以使用 Object.keys、Object.values 或 Object.entries
-
我试过你在codeSandbox中发布的内容,没有错误。也许问题在于您尚未发布的某些代码。 https://codesandbox.io/s/infallible-hugle-6m4iv?file=/src/globalContext.js
标签: javascript reactjs react-hooks state use-reducer