如何initialState
从API 定义?
操作
import * as types from '../constants/ActionTypes' import jquery from 'jquery' import { apiRoot } from '../config.js' import Immutable from 'immutable' import Random from 'random-js' export function fetchLentItemList() { return function(dispatch) { dispatch(fetchLentItems()); jquery.get(`${apiRoot}/api/v1/something/`) .done((data) => { dispatch(fetchLentItems("success", Immutable.fromJS(data))) }) .fail(() => { dispatch(fetchLentItems("error")) }) } } export function fetchLentItems(status, locations = Immutable.List()) { return { type: types.FETCH_LENT_ITEMS, status, locations } }
减速
import * as types from '../constants/ActionTypes' import { combineReducers } from 'redux' import Immutable from 'immutable' const initialState = { initialLentItems: [], lentItems: [] } function initialLentItems(state = initialState.initialLentItems, action) { // return state switch (action.type) { case types.FETCH_LENT_ITEMS: switch (action.status) { case 'success': return { initialLentItems: action.locations, lentItems: [] } case 'error': return { initialLentItems: Immutable.List(), lentItems: [] } default: return Object.assign({}, state, { isLoading: true }) } default: return state } } const rootReducer = combineReducers({ initialLentItems }) export default rootReducer;
在reducers
如果我定义我initialState
这个样子,它的工作原理:
initialLentItems: Immutable.fromJS([ { "lent_item_id": 5648, "vendor": "Vendor A", "product": "Product A", "variant": "Variant A", }, { "lent_item_id": 5648, "vendor": "Vendor B", "product": "Product B", "variant": "Variant B", } ]),
提前致谢.
在componentWillMount
Redux根元素(包含Provider
并接收存储的元素)中,您可以调度fetchLentItems
函数来设置初始状态.