reactjs 更新React上下文:“x不是一个函数”

vnjpjtjt  于 10个月前  发布在  React
关注(0)|答案(2)|浏览(75)

我正在尝试更新React上下文,看到了这个答案。

const LanguageSwitcher = () => {
  const { language, setLanguage } = useContext(LanguageContext);
  return (
    <button onClick={() => setLanguage("jp")}>
      Switch Language (Current: {language})
    </button>
  );
};

字符串
对我来说似乎是明智的,除了我得到“setLanguage不是一个函数”。这个错误实际上似乎是合理的,因为setLanguage似乎被声明为常量。
这些const { x,y } = z的声明是如何工作的?我是否声明了两个常量?如果是这样的话,为什么我读到的那么多例子似乎允许我把x当作变量,把y当作函数?为什么我得到这个错误?
抱歉,新手。感谢你的帮助。
编辑:上下文代码是:

const LanguageContext = React.createContext({
  language: "en",
  setLanguage: () => {}
});

avwztpqn

avwztpqn1#

我的问题是我没有使用上下文提供程序组件。
我把我的放在app.js中,或者你可以这样做:

<LanguageContextProvider>
   <LanguageSwitcher/>
</LanguageContextProvider>

字符串

vmdwslir

vmdwslir2#

首先,不要忘记使用上下文提供程序 Package 您的应用程序。或者,如果您有多个上下文,则需要将它们嵌套在层次结构上。例如,我有两个不同的上下文,UserContext和MessageContext。我需要一些函数和变量,以便在UserContext的MessageContext中使用。所以我用UserContextProvider将App组件 Package 在index.js中。我用MessageContextProvider在App.js中 Package 了路由。因此UserContext位于顶部,我可以获取它的数据,以便在其他所有组件和上下文中使用。

相关问题