簡體   English   中英

錯誤 - 類型錯誤:使用 next.js 中的 redux 存儲時無法讀取未定義的屬性(讀取“getState”)

[英]error - TypeError: Cannot read properties of undefined (reading 'getState') while using redux store in next.js

剛剛遇到這個問題error - TypeError: Cannot read properties of undefined (reading 'getState')

在此處輸入圖像描述

下面是我的代碼,我不知道我遇到這個問題的原因。

pages/app/store.js

import { configureStore } from "@reduxjs/toolkit";
import counterSlice from "../slices/counterSlice";

export const store = configureStore({
    reducer: {
        counter : counterSlice
    }
});

pages/slices/counterSlicer.js

import { createSlice } from "@reduxjs/toolkit";

const initialState = {
    count : 0
};

export const counterSlice = createSlice({
    name : "counter",
    initialState,
    reducers: {
        increment : (state , action) => {
            state.count += 1;
        }
    }
});

export const { increment } = counterSlice.actions;

export const getCount = (state) => state.counter.count;

export default counterSlice.reducer;

我還沒有發送任何動作,也許稍后發送

pages/_app.js

import '../styles/globals.css'
import { Provider } from 'react-redux';
import { store } from '@reduxjs/toolkit';

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

export default MyApp;

最后在pages/index.js

import styles from '../styles/Home.module.css'
import { useSelector } from 'react-redux'
import { getCount } from './slices/counterSlice'

export default function Home() {
  const value = useSelector(getCount);
  return (
    <div className={styles.container}>
      The value is {value}
     </div>
  )
}

注意:有關更多信息,讓我告訴你,我也在 React react app中嘗試了確切的代碼,但相同的代碼在 React 中有效但在 next.js 中無效

您可以在此圖像中檢查react的 output

在此處輸入圖像描述

你需要包裹道具。

請看這個https://github.com/kirill-konshin/next-redux-wrapper/blob/master/packages/demo-redux-toolkit/pages/_app.tsx

從您的store.js導出包裝器

import { createWrapper } from 'next-redux-wrapper';
...
export const wrapper = createWrapper(makeStore);

你的 _app.js 應該是

 import '../styles/globals.css' import { Provider } from 'react-redux'; import { wrapper } from './store'; function MyApp({ Component, ...rest }) { const { store, props } = wrapper.useWrappedStore(rest); return ( <Provider store={store}> <Component {...props} /> </Provider> ); } export default MyApp;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM