其實這小小的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)也可以啦
大致上今天已經打完。
我還看看有什麼可以補的,有的話我在修改上來!!