我试图从API中获取一些数据,并在我的redux存储中设置数据。但是,当我试图对redux存储中的数据执行一些操作时,变量是空的。我曾经用过等待,但它似乎不起作用。但是,在useEffect之后,redux (api数据)数据是可见的,并且可以对其进行操作。任何帮助都是非常感谢的。请注意,我需要访问redux字段,而不仅仅是从函数获取返回的数据。访问redux存储字段非常重要。这是我的代码:
useEffect(() => {
async function loadData() {
const startingDateYear = moment();
const eventDates = generateDatesForYear(startingDateYear.year().toString());
await dispatch(fetchData('0009', eventDates[0], eventDates[1]));
}
loadData();
console.log(event.myDataArray) // event is a reducer and myDataArray is the field. It can be accessed outside the function with data incorporated but within useEffect I am not able to use the freshly fetched data.
return {};
}, []);
export const fetchData = (p1, p2, p3) => {
return async dispatch => {
const path = `dataFromAPIURL`;
try {
dispatch({
type: FETCH_STARTED,
});
const myDataArray = await RestService.get(path);
dispatch({
type: FETCH_FINISHED,
});
dispatch({
type: UPDATE_REDUCER_STATE,
payload: myDataArray,
});
return myDataArray;
} catch (error) {
// TODO: error handling
dispatch({ type: FETCH_ERROR, payload: error });
}
};
};
发布于 2020-03-05 05:40:19
您需要第二个带有依赖项的useEffect event.myDataArray
。
useEffect(() => {
async function loadData() {
const startingDateYear = moment();
const eventDates = generateDatesForYear(startingDateYear.year().toString());
await dispatch(fetchData("0009", eventDates[0], eventDates[1]));
}
loadData();
}, []);
useEffect(() => {
console.log(event.myDataArray);
}, [event.myDataArray]);
https://stackoverflow.com/questions/60546362
复制相似问题