V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  TWorldIsNButThis  ›  全部回复第 21 页 / 共 21 页
回复总数  405
1 ... 12  13  14  15  16  17  18  19  20  21  
2022-03-12 00:56:27 +08:00
回复了 TWorldIsNButThis 创建的主题 前端开发 react 的请求+缓存库 swr 的正确使用姿势?
但是这样写第一次渲染的时候一定会请求两次 id ,有什么方法优化吗

另外如果用 react query 实现相同的功能会不会简单些?
2022-03-11 23:50:12 +08:00
回复了 TWorldIsNButThis 创建的主题 前端开发 react 的请求+缓存库 swr 的正确使用姿势?
const fetchId = async () => {
await new Promise((res) => setTimeout(res, 1000))
const millis = new Date().getMilliseconds().toString()
return millis
.substring(millis.length - 4)
.split('')
.map(Number)
}

const fetchData = async (ids: number[]) => {
await new Promise((res) => setTimeout(res, 1000))
return await Promise.all(ids.map((id) => new Promise((res) => res(`data-${id}`))))
}

const useData = () => {
const { data: ids, isValidating: updateId, mutate: mutateId } = useSwr('/api/ids', fetchId)
const {
data,
mutate: mutateData,
isValidating: updateData,
} = useSwr(ids && 'data', async () => {
return await fetchData((await mutateId()) || [])
})

return {
ids,
data,
mutateData,
mutateId,
updateData,
updateId,
}
}

好像找到一个解决方案,在 dependent query 里 mutate id ,根据返回的 id 再去请求,由于 swr 在短时间内多次调用只会发一次请求,所以最终也就发两次请求?但是不知道这算不算 anti-pattern ?
@murmur ...就是可能继续有嵌套的 if(b) if(c) if(d)

@dcsuibian
@leopod1995 这个只能取值,不能作为参数,或者说不能 mapping 成新值


@IvanLi127 kotlin 的有 scope function ,

if (a) {
const b = doSth(a)
if (b) {
...
}
}
return yyy

可以变成 a?.let { doSth(it) }?.let { doOtherThing(it) } ?: yyy 第一个 it 就是不为 null 的 a ,第二个 it 就是不为 null 的 b

@intmax2147483647
@noe132 fp-ts 看过,但是概念太多了,感觉是一个完整的体系,一时半会整不明白

@Exuanbo 看了一下很精简啊,感谢推荐
2022-03-05 03:57:34 +08:00
回复了 TWorldIsNButThis 创建的主题 前端开发 2022 年了,怎么还没有 all in one 的 linter+formatter
@yoa1q7y
这个是不是要把 prettier 的配置写在 eslint 里
然后试了下必须引入 react 的报错还是必须得手动关掉,settings 里设置 react 的版本有啥用
@Sapp 我写 react 也经常一个文件一个页面,公司的后台管理项目,经典的面 Java 进来写 springboot+react 。。比如一个 xx item 的列表页,十几个搜索维度,几十个字段,然后还有对每个 item 的操作,写着写着就千行左右了,要拆吧感觉也没啥好拆的。。
1 ... 12  13  14  15  16  17  18  19  20  21  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2607 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 19ms · UTC 14:02 · PVG 22:02 · LAX 07:02 · JFK 10:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.