You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NextJS的_app.tsx中正确使用Redux状态?

解决NextJS中_app.tsx访问Redux状态的报错问题

你的错误根源很明确:MyApp组件本身没有被Provider包裹,却在组件内部直接调用了useSelector。因为Provider是在MyApp的return语句里渲染的,组件执行到useSelector这一行时,Redux上下文还未创建,自然会报找不到上下文的错误。

下面给你两种可行的解决方法:

方法一:用Provider包裹MyApp后导出

把Provider移到MyApp外面,让整个MyApp处于Redux上下文覆盖范围内:

import '../styles/globals.css'
import AppNav from '../components/AppNav'
import type { AppProps } from 'next/app'
import { store } from '../store'
import { Provider } from 'react-redux'
import { useSelector } from 'react-redux'
import { RootState } from '../store'

function MyApp({ Component, pageProps }: AppProps) {
  // 此时MyApp已被Provider包裹,可正常使用useSelector
  const user = useSelector((state: RootState) => state.user.value)

  return (
    <div className='global_container'>
      <AppNav />
      <Component {...pageProps} />
    </div>
  )
}

// 外层用Provider包裹MyApp再导出
export default function WrappedApp(props: AppProps) {
  return (
    <Provider store={store}>
      <MyApp {...props} />
    </Provider>
  )
}

方法二:创建嵌套组件封装Redux逻辑

在MyApp内部新建一个嵌套组件,把需要访问Redux状态的逻辑放在这个组件里,确保它处于Provider内部:

import '../styles/globals.css'
import AppNav from '../components/AppNav'
import type { AppProps } from 'next/app'
import { store } from '../store'
import { Provider } from 'react-redux'
import { useSelector } from 'react-redux'
import { RootState } from '../store'

function MyApp({ Component, pageProps }: AppProps) {
  return (
    <Provider store={store}>
      <AppContent Component={Component} pageProps={pageProps} />
    </Provider>
  )
}

// 嵌套组件处于Provider内部,可正常访问Redux状态
function AppContent({ Component, pageProps }: AppProps) {
  const user = useSelector((state: RootState) => state.user.value)

  return (
    <div className='global_container'>
      <AppNav />
      <Component {...pageProps} />
    </div>
  )
}

export default MyApp

核心逻辑就是:所有使用useSelector/useDispatch的组件,必须处于Provider包裹的组件树内部,这样才能获取到Redux上下文。

内容的提问来源于stack exchange,提问作者sebastianTheCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:57:43