iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 25
0
Modern Web

RRRR的世界 (Ruby on Rails + React + Redux)系列 第 25

Day 25, Redux Reducers - State管理大師

其實這小小的reading list的reducer還挺簡單的

import Immutable from 'immutable';

import actionTypes from '../constants/readingListConstants';

export const $$initialState = Immutable.fromJS({
  books: [],
  railsContext: {}, 
});

export default function readingListReducer($$state = $$initialState, action) {
  const { type, books } = action;

  switch (type) {
    case actionTypes.LOAD_BOOKS:
      return $$state.set('books', books); //set???
    case actionTypes.UPDATE_BOOK:
    case actionTypes.DELETE_BOOK:
    case actionTypes.UPDATE_BOOK_STATUS:
    default:
      return $$state;
  }
}

先定義好initial state,然後把每個action要回傳的state定義好,這樣就完成了reducer了!!

可以看到我們的$$state是使用了ImmutableJS,即使使用了set,他並不會改變到內部,而是回傳一個新的state。
這也符合不要隨意修改state的架構!當然要用Object.assign({}, state, books)也可以啦

大致上今天已經打完。
我還看看有什麼可以補的,有的話我在修改上來!!


上一篇
Day 24, Redux Action / ActionCreator 根本是歸納法
下一篇
Day 26, Redux Store 中控室
系列文
RRRR的世界 (Ruby on Rails + React + Redux)30

尚未有邦友留言

立即登入留言