如何在Next.js SSG或SSR中使用Redux工具包调度?

q35jwt9p  于 2023-10-18  发布在  其他
关注(0)|答案(2)|浏览(105)

我困惑了很长一段时间来解决我的问题上使用钩子像useDispatchgetStaticPropsgetServerSideProps。我使用redux-toolkit管理状态,也使用Next.js,但是当在SSG函数中使用(useDispatch)时,我得到了错误
错误:无效的钩子调用。钩子只能在函数组件的主体内部调用。
我还找到了一个解决方案来解决这个问题,使用redux-next-wrapper。但是我想知道除了redux-next-wrapper之外还有其他方法可以解决我的问题吗?

eblbsuwk

eblbsuwk1#

如果你使用的是Nextjs,避免潜在错误的最好方法是使用next-redux-wrapper。一开始可能会有点困惑,但很快你就会明白的。我在github上有一个下一个redux Package 器的模板,有3个简单的reducer来匹配不同的情况,请随意更改它以满足您的需求:https://github.com/vahidkk/My-customized-Redux-Wrapper-for-Next.js-with-3-reducers

eit6fx6z

eit6fx6z2#

我知道现在回答这个问题已经太晚了,但它可能会帮助其他人。
在我最近的nextjs应用程序中,我需要国际化,所有的区域设置都来自后端。我想在应用程序中有区域设置,而不将其传递给子元素。
如你所知,你可以静态地将变量存储在类中,当你改变变量时,它将在整个程序中改变。
所以我决定像这样存储我的变量:

export class SSRStore {
    static locales = {};
}

并将其更改为我的页面组件:

export default function Home({ myLocales }) {
    SSRStore.locales = myLocales;
        
    return (
        <MainLayout>
        </MainLayout>
    )
 }
    
 export const getStaticProps = async () => {
    return {
        props: {
            myLocales: {...}
        }
    }
 }

每当我改变SSR上的数据,它会在整个程序中没有搜索引擎优化问题的影响。
它不是redux,但它比使用next-redux-wrapper好,最新发布是8个月前。

相关问题