【发布时间】:2018-05-29 12:38:45
【问题描述】:
我想在我的小型 react/redux 应用程序中进行 api 调用。我还在学习 redux,所以显然我并不完美。 我的问题是:当我调用 api 时,reducer 没有从动作中获取数据。 当我登录控制台操作有效负载时,它会从服务器获取正确的数据。并且翻转似乎没问题,但是减速器只是没有意识到已经发生了动作。这是我的代码:
actions/apicall.js
import Api from '../api/Api';
import * as types from './actionsTypes';
export function loadSuccess(payload){
console.log(payload)
return {type: types.DATA_LOADED, payload}
};
export function loadData() {
return function(dispatch) {
return Api.getAllBeers().then(payload => {
loadSuccess(payload);
console.log(payload);
}).catch(error => {
throw(error);
});
};
}
reducers/data_reducer
import initialState from './initialState';
import * as types from '../actions/actionsTypes';
export default function beerReducer(state = initialState, action) {
console.log(state);
console.log(action.payload);
switch(action.type) {
case types.DATA_LOADED:
return action.payload
case types.SELECTED_BEER:
return action.payload
default:
return state;
}
}
减速器/索引
import { combineReducers} from 'redux';
import beerReducer from './data_reducer';
const allReducers = combineReducers({
beerReducer,
});
export default (allReducers);
API/API
class Api {
static getAllBeers() {
const request = new Request(`https://api.punkapi.com/v2/beers`, {
method: 'GET'
});
return fetch(request).then(response => {
return response.json();
}).catch(error => {
return error;
});
}
}
export default Api;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './resources/css/main.css';
import App from './resources/App';
import {Provider} from 'react-redux';
import configureStore from './store/configureStore';
import {loadData} from './resources/actions/apicall';
const store = configureStore();
store.dispatch(loadData());
ReactDOM.render(
<Provider store={store}>
<App/>
</Provider>, document.getElementById('root'));
你知道出了什么问题吗? 提前致谢
【问题讨论】: