使用React
, Redux
,Redux-thunk
我想通过服务器请求(API 调用)获得初始状态,但我似乎无法让它工作。
到目前为止我得到了什么:
var Redux = require('redux');
var carReducer = require('./reducers/cars');
var thunk = require('redux-thunk').default;
var initialState = require('./reducers/initialState');
var rootReducer = Redux.combineReducers({
cars: carReducer
});
module.exports = Redux.applyMiddleware(thunk)(Redux.createStore)(rootReducer, initialState.loadInitial());
这是我最初的商店创建。我的InitialState
样子是这样的:
var $ = require('jquery');
module.exports = {
loadInitial: loadInitial
};
function loadInitial() {
return {
cars: [
{}
]
}
}
当我尝试将其loadInitial
转换为$.get('api/...')
时,Redux 告诉我我需要一个初始状态才能使其工作。
在我的减速器中,我有一个加载方法:
function updateReducer(state, action) {
switch (action.type) {
case 'load':
return action.data;
case 'update':
return updateCars(action.data, state);
default:
return action.data || initialState.loadInitial().cars;
}
};
但同样,如果我使用 - 作为默认值 - 异步调用,它似乎不起作用。
我真正想要的是用来自数据库的任何东西来初始化我的商店。这对于我的 HandsonTable 来说是必需的,因为我将属性传递给了表,并且正如我现在所拥有的那样,它只会为我呈现一行,因为我的初始状态只有一个对象。
奇怪的是,当我点击表格时,它实际上得到了我所有的行,因为数据已加载,但我猜为时已晚。
无论如何,我的问题是,如何通过对后端的 api 调用来初始化我的商店?