【发布时间】:2020-06-18 03:27:34
【问题描述】:
我正在尝试从 API 获取一些数据并在我的 redux 存储中设置数据。但是,当我尝试对 redux 存储中的数据进行一些操作时,该变量为空。我用过 await 但它似乎不起作用。但是,在 useEffect 之后,redux store(api data) 数据是可见的并且可以对其进行操作。任何帮助表示赞赏。 请注意,我需要访问 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 });
}
};
};
【问题讨论】:
-
您将 loadData 定义为异步函数,但您没有使用 await 调用它
-
即使我在那里使用 await 并使 useEffect Async 它仍然不起作用,因为我需要访问 redux 存储字段。是的,使 useEffect async 在这一点上似乎不是最优雅的解决方案。
标签: reactjs react-redux react-hooks