反应-使用挂钩时,出现错误-对象不可迭代(无法读取属性Symbol(Symbol.iterator))

同步

我在LessonThemes组件内使用挂钩,并使用上下文,尝试访问Test组件color内的值,但出现错误

对象不可迭代(无法读取属性Symbol(Symbol.iterator))

LessonThemes.jsx

import React, {useState, useEffect, createContext} from "react";
import ThemeContext from "./ThemeContext";

export const CounterContext = createContext();

export default function LessonThemes(props) {
    const [color, setColor] = useState(localStorage.getItem("color"));

    const [themes, setThemes] = useState([
        { name: "G", color: "green" },
        { name: "R", color: "red" },
        { name: "B", color: "blue" },
    ])

    useEffect(() => {
        localStorage.setItem("color", color);
    })

    const SideBarPageContent = (SideBarPageContentBackground) => {
        localStorage.setItem('color', SideBarPageContentBackground);
        setColor(SideBarPageContentBackground);
    }

    return (
        <CounterContext.Provider value={[color, setColor]}>
            {
                themes.map((theme, index) => {
                    return (
                        <label key={index}>
                            <input
                                onChange={() => SideBarPageContent(theme.color)}
                                type="radio"
                                name="background"
                            />{theme.name}</label>
                    );
                })
            }
        </CounterContext.Provider>
    );
}

Test.jsx

export default function Test(props) {

  const [color] = useContext(LessonThemes);

  return (
    <div>
      <div className="sidebar-brand-container">
        <LessonThemes />
      </div>
      <div>
        <span style={{ background: color }} href="#">Theme</span>
      </div>
    </div>
  );
}
德鲁·里斯(Drew Reese)

LessonThemes是一个反应组件,它为其子级提供上下文。CounterContext是您需要在中访问的上下文Test

import { CounterContext } from '../path/to/CounterContext';

export default function Test(props) {

  const [color] = useContext(CounterContext);

  return (
    <div>
      <div className="sidebar-brand-container">
        <LessonThemes />
      </div>
      <div>
        <span style={{ background: color }} href="#">Theme</span>
      </div>
    </div>
  );
}

您可能还应该定义一个初始上下文值,以防Test不被渲染为React DOMTreeCounterContext的祖先。

export const CounterContext = createContext([]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用上下文API时出现此错误。TypeError:对象不可迭代(无法读取属性Symbol(Symbol.iterator))

Storybook 抛出错误:undefined 不可迭代(无法读取属性 Symbol(Symbol.iterator))

更新状态 | 对象不可迭代(无法读取属性 Symbol(Symbol.iterator))

Firebase函数故障:(未定义)对象不可迭代(无法读取属性Symbol(Symbol.iterator))

TypeError:在Function.all(<anonymous>)Firebase Cloud Function上,undefined不可迭代(无法读取属性Symbol(Symbol.iterator)属性)

React JS,Redux状态更新中的错误,无法读取属性Symbol(Symbol.iterator)

错误是散布不可迭代实例的无效尝试。为了可迭代,非数组对象必须具有[Symbol.iterator]()方法

无法读取未定义的属性“ Symbol(Symbol.iterator)”

类型错误:对不可迭代实例进行解构的尝试无效。为了可迭代,非数组对象必须有一个 [Symbol.iterator]()

类型错误:无法读取 null 的属性“foo” - 对象,反应

与对象反应挂钩useState()

与对象反应状态挂钩

如何使用symbol.iterator在javascript中使链表可迭代

未处理的拒绝(TypeError):无法读取未定义的属性'Symbol(Symbol.iterator)'

Angular2:TypeError:无法读取未定义的属性“ Symbol(Symbol.iterator)”

TypeError:无法读取未定义的属性'Symbol(Symbol.iterator)'

IONIC错误TS2488:类型“对象”必须具有返回迭代器的“ [Symbol.iterator]()”方法

反应 - 错误:TypeError:无法读取未定义的属性(读取“then”)

反应使用效果挂钩:TypeError:无法读取未定义的属性“标题”

类型错误:无法读取未定义反应的属性“setState”

反应式(无法读取 null 的属性错误)

反应-激活功能onClick会引发“无法读取属性”错误

类型错误:无法读取未定义的属性“地图”-反应

反应:类型错误:无法读取未定义的属性“值”

无法读取null反应错误react js的属性'refs'

反应错误 - 无法读取未定义的属性“状态”

反应-类型错误:无法读取未定义的属性“修剪”

反应错误:无法读取未定义的属性“地图”

反应组件错误无法读取未定义的属性