인프런 커뮤니티 질문&답변

k0502s님의 프로필 이미지
k0502s

작성한 질문수

리액트로 나만의 블로그 만들기(MERN Stack)

(24) Header(5) - AppNavBar Auth

redux-promise 적용에 대하여 질문올립니다

작성

·

280

0

안녕하세요. 제가 강의의 내용을 응용해보고 싶어서 redux-promise을 통해 적용해보고자 했는데 

간단한 실험을 해보니

TypeError: dispatch(...).then is not a function

계속 위의 에러가 뜨면서 안되네요..

일단 아래와 같이 redux-promise을 적용해보았습니다.

뭐가 문제일까용...

import { createStorecomposeapplyMiddleware } from 'redux';
import createSagaMiddleware from 'redux-saga';
import { createBrowserHistory } from 'history';
import { routerMiddleware } from 'connected-react-router';
import promiseMiddleware from 'redux-promise';


import createRootReducer from './redux/reducers/index';
import rootSaga from './redux/sagas'

export const history = createBrowserHistory();

const sagaMiddleware = createSagaMiddleware();

const initialState = {} // state 초기값

const middlewares = [sagaMiddlewarerouterMiddleware(history), promiseMiddleware]
const devtools = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;

const composeEnhancer =
  process.env.NODE_ENV === "production" ? compose : devtools || compose;

  //createStore안에 있는 3개를 합쳐 store을 만들어주는 것
const store = createStore(
  createRootReducer(history),
  initialState,
  composeEnhancer(applyMiddleware(...middlewares))
);

//saga 미들웨어 작동하기 위한 것
sagaMiddleware.run(rootSaga);
////////////////////////
아래는 redux-promise가 되는지 실험해본 코드입니다.
AppNavbar의 로그인 전송버튼입니다.
export default store;
const onSubmit = (e=> {
    e.preventDefault();
    const { emailpassword } = form;
    const user = { emailpassword };
    console.log(user);
    dispatch({
      type: LOGIN_REQUEST,
      payload: user,
    }).then(() => {
      console.log('Test');
    });
 };

답변 2

0

k0502s님의 프로필 이미지
k0502s
질문자

그렇군요. 감사합니다!

0

싸플님의 프로필 이미지
싸플
지식공유자

redux-promise는 사용해보지 않아 잘은 모르겠지만...

일단 해당 사용법을 보니 saga 처럼 dispatch 하는 건 아닌 것 같습니다. 

https://github.com/redux-utilities/redux-actions

redux promise는 redux action을 사용한다고 하니 참고해보시기 바랍니다. ^^;

k0502s님의 프로필 이미지
k0502s

작성한 질문수

질문하기