【问题标题】:TypeError: Cannot read property 'subscribe' of undefined PersistGate.componentDidMountTypeError:无法读取未定义的 PersistGate.componentDidMount 的属性“订阅”
【发布时间】:2020-06-17 10:15:50
【问题描述】:

我正在将 Redux persist 添加到我的本地存储应用程序中。我相信我正确地遵循了实施并且我不断收到错误:

无法读取未定义类型错误的属性“订阅”:PersistGate.componentDidMount node_modules/redux-persist/es/integration/react.js:76

这是我的代码。

store.js

import { createStore, applyMiddleware } from 'redux';
import { persistStore } from 'redux-persist';
import logger from 'redux-logger';

import rootReducer from './root.reducer';

const middlewares = [logger];

export const store = createStore(rootReducer, applyMiddleware(...middlewares));

export const persistor = persistStore(store);

export default { store, persistor };

root.reducer.js

import { combineReducers } from 'redux';
import { persistReducer } from 'redux-persist';
import storage from 'redux-persist/lib/storage';

import userReducer from './user/user.reducer';
import cartReducer from './cart/cart.reducer';


const persistConfig = {
    key: 'root',
    storage,
    whitelist: ['cart']
}

const rootReducer = combineReducers({
    user: userReducer,
    cart: cartReducer
});


export default persistReducer(persistConfig, rootReducer);

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import {BrowserRouter} from 'react-router-dom';
import App from './App';
import { Provider } from 'react-redux';
import { PersistGate } from 'redux-persist/integration/react';

import Store from './redux/store';
ReactDOM.render(
    <Provider store={Store.store}>

        <BrowserRouter> 
            <PersistGate persistor={Store.persistor} />
                <App />
            <PersistGate/>
        </BrowserRouter>
    </Provider>,
    document.getElementById('root')
);

【问题讨论】:

    标签: javascript reactjs redux redux-persist


    【解决方案1】:

    index.js PersisGate 包装器中的语法已关闭。

    正确的语法是

    <PersistGate persistor={Store.persistor}>
         <App />
    </PersistGate>
    

    【讨论】:

      【解决方案2】:

      你搞砸了:

      import {store,persistor} from "./redux/store";
      
      <Provider store = {store} >
         <Router >
          <PersistGate loading = {null}  persistor = {persistor}>
            <App />
          </PersistGate>
         </Router>
        </Provider>

      我希望这个解决方案对某人有所帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-13
        • 1970-01-01
        • 2020-08-05
        • 1970-01-01
        • 1970-01-01
        • 2020-05-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多