仅使用静态生成的Next.js+Redux Toolkit应用是否必须用next-redux-wrapper?
针对你的场景的核心结论
首先明确:如果你的项目仅使用纯静态生成(SSG)能力,完全不涉及服务端渲染(SSR)、增量静态再生(ISR)的服务端运行时逻辑,你完全不需要使用next-redux-wrapper,且不使用它也能100%获得静态生成的所有优势。
为什么不需要next-redux-wrapper
next-redux-wrapper的核心设计目的,是解决SSR/ISR场景下「服务端运行时拉取数据存入Redux store、再将store状态同步到客户端完成hydrate」的状态一致性问题,只有当你需要在服务端运行时(比如getServerSideProps执行阶段、ISR的动态重新生成阶段)操作Redux store时,才需要用到这个工具。
而纯SSG的所有页面数据都是在构建阶段通过getStaticProps/getStaticPaths生成的,生成后的数据会作为静态页面的固定props传递到客户端,不存在服务端运行时操作Redux的需求,因此完全没有引入这个依赖的必要。
不使用next-redux-wrapper的SSG + Redux Toolkit实现方案
你可以直接用最简洁的客户端Redux初始化逻辑,就能完美适配纯SSG场景,不会损失任何SSG的性能、SEO、CDN分发等优势:
- 你可以在
getStaticProps中拉取需要全局共享的静态数据,通过页面props传递到上层 - 在
_app.js/ts中初始化Redux Toolkit store时,将拿到的静态数据作为preloadedState传入即可完成全局状态的初始化,示例代码如下:
// _app.tsx 简化示例 import { configureStore } from '@reduxjs/toolkit' import rootReducer from './slices' import { Provider } from 'react-redux' export default function App({ Component, pageProps }) { // 每次hydrate时用静态props初始化store const store = configureStore({ reducer: rootReducer, preloadedState: pageProps.staticGlobalState }) return ( <Provider store={store}> <Component {...pageProps} /> </Provider> ) }
- 如果你的部分静态数据不需要全局共享,直接在对应页面组件消费props即可,无需存入Redux。
内容的提问来源于stack exchange,提问作者Rishav
相关产品推荐
相关产品推荐

