首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >next-i18next与Next +阿波罗没有正常工作。

next-i18next与Next +阿波罗没有正常工作。
EN

Stack Overflow用户
提问于 2022-01-26 14:40:32
回答 1查看 494关注 0票数 1

我最近加入了一个新项目,我必须实现i18n。前端堆栈: NextJS (与下一个八月一起)+阿波罗+ next-i18next,我跟随next-i18next来实现翻译。在我添加addWithTranslation部件之前,一切都很好,如下所示:

_app.tsx

代码语言:javascript
复制
    import { appWithTranslation } from 'next-i18next';

    const MyApp = ({ Component, pageProps: { session, ...pageProps } }) => {
    return (
        <>
            <ApolloProvider client={client}>
                    <SessionProvider session={session}>
                        {Component.requireAuth ? (
                            <>
                                <Auth>
                                    <Layout>
                                        <Component {...pageProps} />
                                    </Layout>
                                </Auth>
                            </>
                        ) : (
                            <>
                                <Component {...pageProps} />
                            </>
                        )}
                    </SessionProvider>
            </ApolloProvider>
        </>
    );
};

const Auth = ({ children }) => {
    const router = useRouter();
    const { status } = useSession();

useEffect(() => {
        if (status === 'unauthenticated') {
            router.push('/auth/signIn');
        }
    }, [status, router]);

    if (status === 'authenticated') {
        return children;
    }

    return (
        <div className="lds-ellipsis">
            <div></div>
            <div></div>
            <div></div>
            <div></div>
        </div>
    );
};

export default appWithTranslation(MyApp);

我的问题是:每当用户试图进入另一个页面时,整个应用程序似乎都会重装,因此它会重定向到/auth/signin,而不是立即到达正确的页面。当我记录会话时,每次用户导航到另一个页面时(仅当我添加appWithTranslation()部件时),它似乎都会重置。

有人知道我怎么能修好它吗?

EN

回答 1

Stack Overflow用户

发布于 2022-02-17 13:17:48

基于这一讨论,不应该将SessionProvider封装在appWithTranslation中。所以试着做这样的事情:

代码语言:javascript
复制
import { appWithTranslation } from 'next-i18next';

const MyApp = ({ Component, pageProps }) => {
  return (
    <>
      {Component.requireAuth ? (
        <Auth>
          <Layout>
            <Component {...pageProps} />
          </Layout>
        </Auth>
      ) : (
        <Component {...pageProps} />
      )}
    </>
  );
};

const AppWithI18n = appWithTranslation(MyApp);

const AppWithAuth = (props) => {
  const { pageProps } = props;

  return (
    <ApolloProvider client={pageProps.client}>
      <SessionProvider session={pageProps.session}>
        <AppWithI18n {...props} />
      </SessionProvider>
    </ApolloProvider>
  );
};

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

https://stackoverflow.com/questions/70865239

复制
相关文章

相似问题

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