据我所知,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;
答案 0 :(得分:1)
获取代码应该在动作创建者中。应该在componentWillMount中调度此操作。在操作中进行获取并发送另一个操作,在fetch的成功回调中更新存储。
同时浏览this个帖子。关于将API调用放在正确位置的讨论很好。