我发现redux在useEffect中存在一个神秘问题,
我有一个从API名称获取数据的操作:fetchOrders()
因此,在 allOrder.js 页面中,我输入了以下代码:
//dispatch action
const dispatch = useDispatch();
const initOrders = useCallback(() => dispatch(fetchOrders()), [dispatch]);
//selectors
const mapState = useSelector((state) => {
return {
orders: Object.values(state.orders),
resturantInfo: state.resturant.branchDetails,
async: state.async.loading,
};
});
useEffect(() => {
initOrders();
console.log(mapState.orders);
}, [initOrders]); // eslint-disable-line react-hooks/exhaustive-deps
然后:
return(JSX and show all data from mapState use selector)
问题是,如果我尝试执行双浏览器刷新,则数据将显示在return函数中,但内部使用效果将使我处于一个空的redux状态,为什么!