:惰性初始化,所以要用useState保存函数,不能直接传入函数
//页面加载时函数就已经了执行一次 此时retry被初始化为:空函数 ()=>{}
const [retry, setRetry...] = useState(() => () => {});
//成功时的回调
//此时useCallback第二个参数为空 函数始终不变
const setData = useCallback...> {
setState({
data,
stat: "success",
error: null,
});
}, []);
//失败时的回调...setData(data);
return data;
})
.catch((error) => {
// catch会消化异常,如果不主动抛出...setData,
setError,
// retry被调用时 重新跑一遍,让state刷新一遍
retry,
...state,
};
};
// 返回组件的挂载状态,如果还没挂载或者已经卸载