在reducer

时间:2017-01-01 06:27:27

标签: react-native redux reducers

据我所知,reducer中总是有一个静态的initialState,现在我想异步从远程服务器获取初始状态,我知道如何获取它们,我可以在相关的表示组件的componentWillMount中执行此操作,但是它不仅仅用于演示吗?在连接商店之前,我应该在哪里放置获取代码并获取初始状态?

getInitailState = () => {
    return (
      fetch(apis.GETINITAILURL)
        .then((response)=>response.json())
        .then((responseJson) => {
            return responseJson;
        })
        .catch(e=>e)
    )
}

这是reducer的原始完整代码:

import * as TYPES from '../actions/types.js';
import ApiUtils from '../utils/ApiUtils.js';

const initailTaskState = [{
    "taskid": 1,
    "priority": 3,
    "desc": "Bug fix",
    "timestamp": 5
}]

const tasks = (state = initailTaskState , action) => {
  switch(action.type){
    case TYPES.ADD_TASK:
        return [
            ...state,
            action.task
        ]
    case TYPES.DELETE_TASK:
        return state.filter( task => task.taskid !== action.taskid);

    default:
        return state

  }
}
export default tasks;

1 个答案:

答案 0 :(得分:1)

获取代码应该在动作创建者中。应该在componentWillMount中调度此操作。在操作中进行获取并发送另一个操作,在fetch的成功回调中更新存储。

同时浏览this个帖子。关于将API调用放在正确位置的讨论很好。