더북(TheBook)

21.2.2 post 모듈 생성

 

post 모듈에서 포스트 정보를 불러오는 액션을 작성하고 상태를 관리하는 코드를 입력해 보세요. 방금 만든 getPost 함수를 불러와 GET_POST 액션에서 사용하도록 설정하고, 요청이 성공하면 상태에 넣어 줍니다.

src/store/modules/post.js

import { createAction, handleActions } from ‘redux-actions’;

import { Map, fromJS } from ‘immutable’;
import { pender } from ‘redux-pender’;

import * as api from ‘lib/api’;

// action types
const GET_POST = ‘post/GET_POST’;

// action creators
export const getPost = createAction(GET_POST, api.getPost);

// initial state
const initialState = Map({
  post: Map({})
});

// reducer
export default handleActions({
  ...pender({
    type: GET_POST,
    onSuccess: (state, action) => {
      const { data: post } = action.payload;
      return state.set(‘post’, fromJS(post));
    }
  })
}, initialState)

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.