减速器不是一个功能

时间:2017-01-22 14:36:14

标签: javascript reactjs redux

尝试创建reducers ang从行动中获取数据

但是在控制台中得到错误:reducer不是函数.....

我的减速机:

import { INCOME_LIST } from '../actionTypes'

import Immutable from 'immutable'

    const initialUserState = {
      list: []
    }

    const listReducer = function(state = initialUserState, action) {
      switch(action.type) {
      case 'INCOME_LIST':
        return Object.assign({}, state, { list: action.data });
      }
      return state;
    }

我哪里有错?

我的行动:

import axios from 'axios'
import { INCOME_LIST } from '../actionTypes'



function receiveData(json) {
    return{
        type: INCOME_LIST,
        data: json
    }
};


export function IncomeList () {

    return dispatch => {

        return (

            axios.post('http://139.196.141.166:8084/course/income/outline',{}, {
      headers: { 'X-Authenticated-Userid': '15000500000@1' }
     }).then(function (response) {

                dispatch(receiveData(response.data));

            })

            )
    }
}

如何以正确的方式为其创建减速器?

2 个答案:

答案 0 :(得分:0)

看起来你从未导出过减速机。 export default listReducer文件中的listReducer.js应该可以解决问题。

答案 1 :(得分:0)

  • 商店-拥有我们的州-只有一个州
  • 动作-可以使用动作来修改状态-简单对象
  • 调度程序-动作需要由某人发送-称为调度动作
  • Reducer-接收动作并修改状态以为我们提供新状态
    • 纯函数
    • 仅强制性参数为“类型”
  • 订户-侦听状态更改以更新ui

    const initialState = {
        counter: 0
    }
    
    const reducer = (state = initialState, action) => {
        switch (action.type) {
            case 'INCREASE_COUNTER':
                return { counter: state.counter + 1 }
            case 'DECREASE_COUNTER':
                return { counter: state.counter - 1 }
        }
        return state
    }
    
    const store = createStore(reducer)
    
    class App extends Component {
    
        render() {
            return (
                <Provider store={store}>
                    <CounterApp />
                </Provider>
            );
        }
    }