鍍金池/ 問答/HTML/ reducer如何從后臺獲取數(shù)據(jù)來初始化store?

reducer如何從后臺獲取數(shù)據(jù)來初始化store?

我想寫一個reducer,初始化的時候state的值是從后臺取回來的,應該如何實現(xiàn)?
在使用其他action的時候是直接使用的redux-thunk直接dispatch一個函數(shù)操作接口還是dispat已經(jīng)存在的state?

補充一下:
我想通過從后臺獲取值來初始化state,如何所有對數(shù)據(jù)的操作都是基于這個state.
這是是后臺取數(shù)據(jù)的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這一塊還是有點懵逼,謝謝各位大神指導~

回答
編輯回答
陌璃
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;
  }
}

參照這種模式異步獲取數(shù)據(jù)的函數(shù)里返回一個函數(shù),該函數(shù)接收的參數(shù)是dispatch,進入函數(shù)之后dispatch一個已有的action或者actionCreate函數(shù),根據(jù)返回數(shù)據(jù)dispatch不同的成功或失敗action

2018年5月31日 11:24