为什么我的道具带回动作功能,而不是日期?

时间:2018-05-30 09:56:38

标签: javascript reactjs redux redux-thunk

我有一个反应应用程序正在拉下一些数据,它变成了一个承诺,所以我使用Thunk。但是,当我记录__all__时,getShift操作将作为函数打印出来。

日志返回: {getShifts:ƒ} getShifts:ƒ() proto :对象

动作:

this.props

减速器:

 import settings from '../../aws-config.js';
    import Amplify, { Auth, API } from 'aws-amplify';
    export const GET_STAFF_SHIFTS = 'get_staff_shifts';
    export const SHIFTS_LOAD_FAIL = 'shifts_load_fail';
    export const getShifts = () => dispatch => {
        console.log('Fetching list of shifts for user...');
        const request = API.get("StaffAPI", "/shifts", {
            headers: {
                   'Accept': 'application/json',
                   'Content-Type': 'application/json',
            }
        })
        .then(response =>

            dispatch({
              type: 'GET_STAFF_SHIFTS',
              payload: response
            })
        )
        .catch(err =>
            dispatch({type: 'SHIFTS_LOAD_FAIL'})
        )
        }

行动:

    import { getShifts, GET_STAFF_SHIFTS} from '../actions';
    export default function(state = {}, action) {
      switch(action.type){
        case GET_STAFF_SHIFTS:
            return Object.assign({}, state,{
              start_time: action.payload
            })
            default:
            return state;
      }
    }

1 个答案:

答案 0 :(得分:0)

动作创建者应该是一个预期的功能。因此,控制台记录this.props.getShifts将为您提供一个功能。

这里有两个问题:

首先要调度错误的操作类型 dispatch({type: 'GET_STAFF_SHIFTS', ... })。

其次你应该通过dispatch({type: GET_STAFF_SHIFTS, ... })函数使用redux state

mapStateToProps

并通过function MapDispatchToProps(dispatch) { return bindActionCreators({ getShifts }, dispatch); } function MapStateToProps(state) { return { shift: state.start_time OR state.your_reducer.start_time } } export default connect(MapStateToProps, MapDispatchToProps)(StaffRota); 使用此状态(映射到道具)。