【问题标题】:TypeError: Invalid attempt to destructure non-iterable instance. In order to be iterable,TypeError:无效的解构不可迭代实例的尝试。为了可迭代,
【发布时间】:2020-11-24 03:42:59
【问题描述】:

我正在尝试在 react native 上使用 API 上下文,但出现以下错误。

TypeError:解构不可迭代实例的尝试无效。 为了可迭代,非数组对象必须有一个 Symbol.iterator 方法。

这就是我的代码的样子

import React, {createContext, useState, useContext} from 'react';

const PurchasesContext = createContext();

export const PurchasesContextProvider = ({children}) => {
  const [purchases, setPurchases] = useState([]);
  return (
    <PurchasesContext.Provider value={[purchases, setPurchases]}>
      {children}
    </PurchasesContext.Provider>
  );
};

export const usePurchasesContext = () => {
  const [purchases, setPurchases] = useContext(PurchasesContext);

  return {
    purchases,
    setPurchases,
  };
};

那我就这样用了

const {purchases, setPurchases} = usePurchasesContext();

有人知道为什么会发生这种情况,我该如何解决它已经尝试了几个小时?

【问题讨论】:

  • 你是否用你的提供者包装了你的 App.js ?此外,在您使用它的组件中,您应该传递上下文 import { PurchasesContextProvider } from '/the/path/to/your/file' const { pruchases, setPurchases } = React.useContext(PurchasesContextProvider)
  • 没关系我只是这样做解决了const PurchasesContext = createContext([[], () =&gt; {}]);
  • 好吧,伙计:)
  • 此错误可能是由于错误地将值传递给提供程序而导致的。检查大括号和括号是否正确。见:stackoverflow.com/a/67644741/1271903

标签: reactjs react-native


【解决方案1】:

没关系,我通过执行以下操作解决了它

const PurchasesContext = createContext([[], () => {}]);

【讨论】:

    猜你喜欢
    • 2021-10-10
    • 2016-12-14
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 2019-06-16
    相关资源
    最近更新 更多