【发布时间】:2020-06-06 15:40:49
【问题描述】:
在我的 React Redux 应用程序中,我从我的 action creator 上的 API 接收原始数据,然后我进一步对其进行操作,然后将带有精炼数据的 action 分派给 Reducer。但是,在运行时,代码似乎永远不会指向将操作分派给减速器,因为我尝试记录文本并且它从未出现在控制台上。我错过了什么?我很感激任何帮助。相关动作创建者代码如下...
export const getTrainerAvailability = (trainerId) => {
console.log('getting here', trainerId)
return async (dispatch) => {
dispatch(getTrainerAvailabilityRequest());
const token = await AsyncStorage.getItem('token');
fetch(url + 'gettraineravailability/' + trainerId, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': `${token}`
}
})
.then(res => res.json())
.then(res => {
console.log('RES', res) // <-- logs as expected
if (res.error) {
console.log('error')
throw(res.error);
}
dispatch(getTrainerAvailabilitySuccess(res));
})
.catch(error => {
dispatch(getTrainerAvailabilityError(error));
})
}
};
export const getTrainerAvailabilitySuccess = (data) => {
console.log('RAW DATA: ', data[0]) // <-- this is logged as expected
const rawAvailability = data[0]
let mondayAvailability = [];
let tuesdayAvailability = [];
let wednesdayAvailability = [];
let thursdayAvailability = [];
let fridayAvailability = [];
let saturdayAvailability = [];
let sundayAvailability = [];
for (let item of rawAvailability) {
if (item.week_day === 'Monday') {
mondayAvailability.push(item);
}
else if (item.week_day === 'Tuesday') {
tuesdayAvailability.push(item);
}
else if (item.week_day === 'Wednesday') {
wednesdayAvailability.push(item);
}
else if (item.week_day === 'Thursday') {
thursdayAvailability.push(item);
}
else if (item.week_day === 'Friday') {
fridayAvailability.push(item);
}
else if (item.week_day === 'Saturday') {
saturdayAvailability.push(item);
}
else if (item.week_day === 'Sunday') {
sundayAvailability.push(item);
}
}
console.log('im here', mondayAvailability) // this is not logged
const interval = moment.duration(30, 'minutes');
let startTime;
let endTime
let arrayLength;
let slotTime;
let refinedData;
// further array manipulation...
console.log('REFINED DATA: ', refinedData) // <- this is not logged
return {
type: 'GET_TRAINER_AVAILABILITY_SUCCESS',
payload: refinedData
}
};
【问题讨论】:
-
我需要看看你是如何称呼它的,以便让你了解它为什么可能会或可能不会起作用。但鉴于您的工作流程,请查看
redux-thunk中间件。它允许调度函数dispatch( fn())我不认为你可以在没有中间件的情况下默认调度函数。 (编辑:redux-saga也很适合,但更复杂) -
@DanielB.Chapman 我正在使用 redux-thunk
-
控制台中没有 JS 错误可以解释缺少的第二个 console.log 吗?
-
@Florian 控制台没有错误。
标签: reactjs redux react-redux