我有一个反应应用程序正在拉下一些数据,它变成了一个承诺,所以我使用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;
}
}
答案 0 :(得分:0)
动作创建者应该是一个预期的功能。因此,控制台记录this.props.getShifts
将为您提供一个功能。
这里有两个问题:
首先要调度错误的操作类型
1}}而不是您在减速机中所期望的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);
使用此状态(映射到道具)。