Closed wooxyz closed 2 years ago
升级版本后,是可以的。
ant-design/pro-form版本不同,ProFormSelect的dependencies 发生变化,request代码执行不一。 这是pro-form@1.52.13,值切换,不请求,最新的也是。 https://codesandbox.io/s/ji-ben-shi-yong-forked-w7d2rc。 这是pro-form@1.49.3,值切换,请求。https://codesandbox.io/s/biao-dan-xiang-forked-p503qn?file=/App.tsx:0-888。 请老哥们好好看下,拜托!!! @chenshuai2144
上面第一个有点问题,请看这个,https://codesandbox.io/s/ji-ben-shi-yong-forked-tg9tpl?file=/App.tsx。 打开控制台,就可发现问题。
看了下是被缓存了。
只要params 相同就不会重新发起请求。
看了下是被缓存了。
只要params 相同就不会重新发起请求。
但两个案例是完全相同的代码逻辑,只是版本不一而已。难道是1.49.3没有缓存?
缓存了,旧版的缓存和select都有点问题,已经不知道是哪个版本修复的了
是正常的现象,我们认为request查询的都是枚举,是不可变的,只要请求过了都会缓存在内存中,除非你重新刷新页面
从字面意思来看,dependencies是依赖值,就像hooks里的思想一样。我的场景就是值变化,需要重新发强求,不能加个加个参数控制吗?
做缓存主要是减少没必要的请求,除非你这个数据是一直在变的,否则没有重新请求的必要吧
可以描述下需求是啥样的?
好,按你的意思:第一次选男,请求,返回一个结果给下面的select框;选女,请求,返回另一个结果select。当再次切换到男时,不发请求,结果select是女的请求数据,难道这样不是怪怪的吗?
好,按你的意思:第一次选男,请求,返回一个结果给下面的select框;选女,请求,返回另一个结果select。当再次切换到男时,不发请求,结果select是女的请求数据,难道这样不是怪怪的吗?
那是你理解错了
缓存是缓存了你返回的值,当你选了女又选回了男,选项将自动展示男的时候的选项
看看这个demo你就懂了 https://codesandbox.io/s/ji-ben-shi-yong-forked-mms429?file=/App.tsx
我还有一个疑问,下拉框数据很多:当下拉列表滚动到底部时,开始发起新的请求(如第2页),能在request中能获取到第一页的缓存数据吗?新旧一起返回,还是得重新定义变量缓存下?
page 不一样会重新请求的。
page 不一样会重新请求的。
我知道。能在request函数里一并搞定,新旧数据?(不想再定义变量缓存第一页的数据,或者第一页的缓存数据如何在request获取)
没发现select有滚动到底部加载下一页的功能
不过你这个需求好像确实不支持,当你到第二页,你想要[...第一页, ...第二页]的数据应该是这样吧,还没发现有这样的功能需求
不过你这个需求好像确实不支持,当你到第二页,你想要[...第一页, ...第二页]的数据应该是这样吧,还没发现有这样的功能需求
是的,想要这个功能。我们返回的数据量有点多
select本身就不支持分页请求,需要这种功能得去antd提
select是支持虚拟滚动,我测试过百万条数据也是首次加载会卡一点,性能问题antd扛着,放心使用
@chenshuai2144 @1247748612
1、request只要请求过了都会缓存在内存中,提供了性能方面的部分优化。
2、但是目前有以下的场景: 有两个下拉框为 a和b[ a和b 有联动 , a的值会影响b的options选项。另外,在其他页面 b会有增删改查的情景,那么此时缓存无法取到最新的数据]。
3、您可能推荐在a的change事件中来处理(还需要结合hooks),但是我们想在proFormSelect组件中,统一处理相关逻辑。
4、能否再提供一个属性,来灵活的处理是否需要缓存。
4、能否再提供一个属性,来灵活的处理是否需要缓存。 有个 cacheForSwr 属性,置为false不启用缓存
能用codesandbox实现个示例吗?看看具体是什么场景
4、能否再提供一个属性,来灵活的处理是否需要缓存。 有个 cacheForSwr 属性,置为false不启用缓存
能用codesandbox实现个示例吗?看看具体是什么场景
有个 cacheForSwr 属性,置为false不启用缓存
<ProFormSelect cacheForSwr={false} name="addr" width="md" label="与性别联动的选择器" // dependencies 的内容会注入 request 中 dependencies={['gender']} request={async (params) => { //... }} />
这么写不行啊,咋写啊?
4、能否再提供一个属性,来灵活的处理是否需要缓存。 有个 cacheForSwr 属性,置为false不启用缓存
能用codesandbox实现个示例吗?看看具体是什么场景
https://codesandbox.io/s/ji-ben-shi-yong-forked-bh6hwg?file=/App.tsx 您好 添加这个这个属性,且更新最新版本的proForm,仍然存在缓存的问题。
https://codesandbox.io/s/ji-ben-shi-yong-forked-bh6hwg?file=/App.tsx 您好 添加这个这个属性,且更新最新版本的proForm,仍然存在缓存的问题。
看起来是个bug,form中没有设置cacheForSwr是不会设置缓存的
🐛 bug 描述
一开始,点击男或女,request中代码是执行的。当再点击时(如1→2→1),代码就不往下执行了(实际调接口也是一样结果)。难道不是值发生变化,就重新请求吗?还是我理解的dependencies 发生变化,有问题???
💻 复现代码
© 版本信息