【问题标题】:Reducer doesn't catch when action is dispatched调度操作时,Reducer 未捕获
【发布时间】: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'));

你知道出了什么问题吗? 提前致谢

【问题讨论】:

    标签: reactjs api redux


    【解决方案1】:

    您必须在 apicall.js 中发送操作: dispatch(loadSuccess(payload));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 2018-05-07
      • 2019-09-03
      • 2021-11-16
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多