reducer如何从后台获取数据来初始化store?

我想写一个reducer,初始化的时候state的值是从后台取回来的,应该如何实现?
在使用其他action的时候是直接使用的redux-thunk直接dispatch一个函数操作接口还是dispat已经存在的state?

补充一下:
我想通过从后台获取值来初始化state,如何所有对数据的操作都是基于这个state.
这是是后台取数据的db.json的格式。
{

"user": [
  {
    "id": 10000,
    "name": "张三",
    "student_id": 2018214001,
    "gender": "male"
  },
  {
    "id": 10001,
    "name": "李四",
    "student_id": 2018214002,
    "gender": "female"
  },
  {
    "id": 10002,
    "name": "王五",
    "student_id": 2018214003,
    "gender": "female"
  }
],
"book": [
  {
    "id": 10000,
    "name": "JavaScript从入门到精通",
    "price": 45,
    "owner_id": 10000
  },
  {
    "id": 10001,
    "name": "Java从入门到放弃",
    "price": 67,
    "owner_id": 10001
  }
]

}

我想做的是,将user和book拆分成两个render,分别管理两个state,然后在进页面的时候给router绑定onEnter事件的事件,事件里面通过store.dispatch(fn()),fn里面在去fetch请求,把返回来的值在赋值state。
图片描述

图片描述

不知道这样子做行不行,因为中间卡住了,不知道应该怎么讲两个state合并之后和bd.json格式一样。对redux这一块还是有点懵逼,谢谢各位大神指导~

阅读 4.8k
1 个回答
let initState={

}
function userReducer(state=initState,action){
  switch(action.type){
    case 'REQUEST_USER_LIST':
    return Object.assign({},state,{user:action.payload})
    case 'REQUEST_BOOK_LIST':
    return Object.assign({},state,{book:action.payload})
    default:
    return state;
  }
}

参照这种模式异步获取数据的函数里返回一个函数,该函数接收的参数是dispatch,进入函数之后dispatch一个已有的action或者actionCreate函数,根据返回数据dispatch不同的成功或失败action

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题