hooks
hooks copied to clipboard
【V3】useRequest 取消initialData导致的开发体验问题
不废话..直接上代码...
// v2
const getApiDataAres = useRequest(getApiDataA, {
initialData: DataAinit
})
const getApiDataBres = useRequest(getApiDataB, {
initialData: DataBinit
})
const getApiDataCres = useRequest(getApiDataC, {
initialData: DataCinit
})
<RenderComponent loading={getApiDataAres.loading} data={getApiDataAres.data}>
<RenderComponent loading={getApiDataBres.loading} data={getApiDataBres.data}>
<RenderComponent loading={getApiDataCres.loading} data={getApiDataCres.data}>
// v3
const {data:getApiDataA_data = DataAinit,loading:getApiDataA_loading} = useRequest(getApiDataA})
const {data:getApiDataB_data = DataBinit,loading:getApiDataB_loading} = useRequest(getApiDataB})
const {data:getApiDataC_data = DataCinit,loading:getApiDataC_loading} = useRequest(getApiDataC})
<RenderComponent loading={getApiDataA_loading} data={getApiDataA_data}>
<RenderComponent loading={getApiDataB_loading} data={getApiDataB_data}>
<RenderComponent loading={getApiDataC_loading} data={getApiDataC_data}>
问题:
V3想使用initialData,必须使用结构赋值方式..这就逼我
必须对每个解构变量重新命名.及其不优雅...有没有最佳实践?难道你们写业务也是对每个变量重新命名??
确实没有考虑到这个问题。
我考虑下是否加上这个配置项。
还有个问题就是,解构的话 null
不会被默认值覆盖的。
const a = { b: null};
const {b = 1} = a;
console.log(b); // b 为 null
请求加回,就因为这个问题,只好用回v2。
确实,多个命名冲突就比较麻烦
过去一年多了还没有动静。
initialData
很适合做 null object,在还没有取得数据的时候自动填充空值。没有initialData
只能满世界做空值判断,太头疼了。
好像谁回答过这问题,请求没成功前数据就默认是undefined,逻辑倒没问题。