react reducer中如何异步更新数据?-灵析社区

ciiiiinema

export enum actionType { updateData = 'updateData', } export const initData = { data: {} } const update = () => { const age = 'xxx' let name = 'xxxx' // 这里模拟异步请求 setTimeout(() => { name = '异步数据' }, 2000) return { age, name, } } export const passengerReducer = (state, action) => { const data = update() switch (action.type) { case actionType.updateData: return { ...state, data, } default: return state } } // 外部调用 dispatch({ type: updateData }) 之前`name`的更新是同步更新的没有问题现在需要走接口,等接口返回后再更新,我试过在这个文件中调用`dispath`但是调用报错,请问下这种异步的数据该怎么更新

阅读量:16

点赞量:0

问AI
喝一杯吧可以吗
const MyComponent = () => { const [state, dispatch] = useReducer(passengerReducer, initData); useEffect(() => { const fetchData = async () => { const name = await fetchName(); dispatch({ type: actionType.updateData, payload: { name } }); }; fetchData(); }, []); // 组件其他部分 };