[에러] use createWrapper()

옥수수의 코딩이야기·2023년 2월 12일
0

에러

목록 보기
13/18
post-thumbnail

문제: 경고 메세지
use createWrapper() and wrapper.useWrappedStore()
원인: 공식 문서 에 들어가 확인해 보니 createWrapper() 와 useWrappedStore() 를 사용하는 것으로 바뀜.
해결방안
1. store> configureStore.js 를 만들어 store를 wrapper로 감싼다.

import { createWrapper } from "next-redux-wrapper";

import { legacy_createStore as createStore } from "redux";

import reducers from "../reducers";

const configureStore = () =>{
    const store= createStore(reducers, enhancer);
    return store;
}

const wrapper = createWrapper(configureStore,{
    debug: true
});

export default wrapper;
  1. _app.js 에서 useWrappedStore() 를 이용하여 App 컴포넌트에 store를 연결한다.
import React from 'react';
import Proptypes from 'prop-types';
import AppLayout from '../components/AppLayout';
import { Provider } from 'react-redux';
import wrapper from '../store/configureStore';

const App = ({Component, ...rest }) => {
    const {store, props} = wrapper.useWrappedStore(rest);
    return (
        <Provider store={store}>
            <AppLayout>
                <Component {...props.pageProps}/>
            </AppLayout>
        </Provider>
    );
};

App.Proptypes ={
    Component: Proptypes.elementType,
    store: Proptypes.object,
}

export default App;
  1. 추가
    redux-devtools 연결 도 예전에 사용 하던 코드와 달라져서 같이 정리 한다.
//store> configureStore.js
import { createWrapper } from "next-redux-wrapper";

import { applyMiddleware, compose, legacy_createStore as createStore } from "redux";

import reducers from "../reducers";

const configureStore = () =>{
    const middlewares = [];
    const composeEnhancers =
        typeof window === 'object' &&
        window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?   
            window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
    }) : compose;
    const enhancer = composeEnhancers(applyMiddleware(...middlewares)) 
    const store= createStore(reducers, enhancer);
    return store;
}

const wrapper = createWrapper(configureStore,{
    debug: true
});

export default wrapper;

참고
https://velog.io/@mangojang/error-next-redux-wrapper-%EC%82%AC%EC%9A%A9-%EC%8B%9C-Use-createWrapper
https://github.com/kirill-konshin/next-redux-wrapper#redux-toolkit
https://github.com/zalmoxisus/redux-devtools-extension

profile
프론트엔드 공부중 기억은 블로그가 대신합니다.

0개의 댓글