我正在构建一个 Next.js 应用程序,它目前正在使用 Redux。在构建它时,我想知道是否真的有必要使用 Redux,以及它的使用是否实际上是一种反模式。这是我的推理:
为了在 Next.js 中正确初始化 Redux Store,您必须使用 getInitialProps
方法创建一个自定义的 App
组件。通过这样做,您将禁用 Next.js 提供的 自动静态优化。
相比之下,如果我要在客户端包含 Redux,只有在 App 挂载后,Redux 商店才会在每次服务器端导航后重置。例如,我有一个 Next.js 应用程序,它在客户端初始化 Redux 存储,但是当路由到动态路由时,例如 pages/projects/[id]
,页面是服务器端呈现的,我必须重新获取商店中的任何信息。
我的问题是:
- 在这种情况下,Redux 存储有什么好处?
- 我应该在根目录中初始化存储
App
组件并放弃自动静态优化吗? - 有没有更好的方法来管理 Next.js 9.3 中的状态
getStaticProps
和 其他数据获取方法 - 我错过了什么吗?
原文由 Jamie S 发布,翻译遵循 CC BY-SA 4.0 许可协议
没错,如果您遵循这种方法。
是的,您可以创建一个 Redux Provider 作为包装器并包装您需要的组件,redux 上下文将自动初始化并在该组件中提供。
例子:
您现在可以仅将 Redux 用于需要状态管理的页面,而无需禁用整个 App 的优化。
回答您的问题“ 将 Redux 与 Next.js 一起使用是一种反模式吗? ”
不可以,但需要正确使用。
有关如何在此处完成的更多信息: https ://github.com/vercel/next.js/tree/canary/examples/with-redux
我希望这有帮助