首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复“作为值支柱传递给上下文提供程序的对象更改每个呈现”--考虑使用useMemo错误?

如何修复“作为值支柱传递给上下文提供程序的对象更改每个呈现”--考虑使用useMemo错误?
EN

Stack Overflow用户
提问于 2022-08-29 08:47:44
回答 1查看 228关注 0票数 1

我是新来的反应钩子和下一个js。我得到了这个错误。我不知道如何在这个场景中使用useMemo。有人能帮我吗?这是我的密码-

代码语言:javascript
复制
import { useEffect, useState, useMemo } from "react";
import { useRouter } from "next/router";
import { ThemeProvider } from "next-themes";
import { ContextProvider } from "src/context/context";
import { ModeContext } from "src/context/ModeContext";

const MyApp = ({ Component, pageProps }) => {
    const [kycState, setkycState] = useState("unverified");
    const [kybState, setkybState] = useState("unverified");
    const router = useRouter();

    return (
        <ContextProvider>
            <ModeContext.Provider
                **value={{ kycState, setkycState, kybState, setkybState }}**
            >
                <ThemeProvider defaultTheme="dark">
                    <Component {...pageProps} />
                </ThemeProvider>
            </ModeContext.Provider>
        </ContextProvider>
    );
};

export default MyApp;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-29 09:09:11

两个对象在javaScript中永远不会相等,除非它们指向相同的地址。

代码语言:javascript
复制
const a = {  a : 1 };
const b = {  b : 2 };

const obj1 = { a , b };
const obj2 = { a , b };
console.log(obj1 === obj2);

每次{{ kycState, setkycState, kybState, setkybState }}都是一个新的对象。

你可以回忆录其价值:

代码语言:javascript
复制
const MyApp = ({ Component, pageProps }) => {
    const [kycState, setkycState] = useState("unverified");
    const [kybState, setkybState] = useState("unverified");
    const router = useRouter();

    const obj = useMemo(() => ({
       kycState,kybState,setkybState,setkycState
   }),[kycState,kybState,setkybState,setkycState]);

    return (
        <ContextProvider>
            <ModeContext.Provider
                **value={{ kycState, setkycState, kybState, setkybState }}**
            >
                <ThemeProvider defaultTheme="dark">
                    <Component {...pageProps} />
                </ThemeProvider>
            </ModeContext.Provider>
        </ContextProvider>
    );
};

现在,只有在依赖项发生变化时才重新创建对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73526249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档