Closed bluescurry closed 3 years ago
我想办法优化下性能,只render 50+次
我想办法优化下性能,只render 50+次
请问一下,这个问题release了吗
发布了,可以安装试试看
发布了,可以安装试试看
好的,我试试
发布了,可以安装试试看
我试了下,用的还是这个示例(https://codesandbox.io/s/competent-night-co9tp?file=/App.tsx:1238-1247) 还有自己的业务项目。确实是有一些效果,不过还是没有满足预期效果,点了“查询按钮”后依然会卡死大概1.5s-2s,想问问还能再优化一下吗,或者是否可以说一下在点击”查询“时的耗时操作在哪里,使用者是否可以通过一些类似useMemo、react.memo 的方式自主控制渲染次数达到预期效果?
你来个重现吧。我看看内存和cpu占用
你来个重现吧。我看看内存和cpu占用
https://codesandbox.io/s/competent-night-co9tp?file=/App.tsx:1238-1247 这个示例就可以的,点”查看“会有明显的卡顿
看到了,你这个有点不人道呀,应该用树选择器,这样性能就好很多了。
主要事件消耗在了 计算 options 和 计算 table 中应该显示什么
看到了,你这个有点不人道呀,应该用树选择器,这样性能就好很多了。
主要事件消耗在了 计算 options 和 计算 table 中应该显示什么
哈哈,可是城市数据就一级啊,treeSelect 更适用于展示多级数据嘛
你可以区分一下省,我选了半天都没找到杭州和太原
看到了,你这个有点不人道呀,应该用树选择器,这样性能就好很多了。
主要事件消耗在了 计算 options 和 计算 table 中应该显示什么
我觉得这个场景应该比较常见的,请问有优化方案吗,现在是卡在这个性能瓶颈不能上线。。。
不常见的,你还是关掉这个吧。一个计算需要 1ms。 500 个就肉眼可见了。
你可以区分一下省,我选了半天都没找到杭州和太原
恩。。。这个基础数据格式我决定不了~ 是后端的返回数据,需求层可能不好改了 针对这种 options 很多的 select 场景我觉得比较常见,不然 select 也不会默认开启虚拟滚动了
不常见的,你还是关掉这个吧。一个计算需要 1ms。 500 个就肉眼可见了。
我们不能因为不好实现而把场景需求直接干掉啊哈哈,如果从pro-table底层无法优化的话,那我是不是可以针对这种场景自定义render一个组件,然后内部控制 option 是否要重新渲染呢
那你可能要做很多工作还要写很多缓存类的代码。
缓存什么失效时计算机领域最难的问题之一,我建议你不要这么搞
那你可能要做很多工作还要写很多缓存类的代码。
缓存什么失效时计算机领域最难的问题之一,我建议你不要这么搞
这个城市数据属于常量数据,首次加载后就不会变了,我的想法是判断数组的长度,只要长度不变,我可以默认认为这个数据就没有,就不需要重新render
可以更狠一点,认为它永远不会改变。这样就可以用 react.memo 做出来性能非常好的组件。
如果它真的改变了,你是可以知道的,直接修改一下key,让组件销毁重建
可以更狠一点,认为它永远不会改变。这样就可以用 react.memo 做出来性能非常好的组件。
如果它真的改变了,你是可以知道的,直接修改一下key,让组件销毁重建
我使用了 renderFormItem
属性,自建了一个 select 组件,通过 React.memo
优化了渲染次数。达到了预期效果~
我理解这种 render 很耗性能的 column 可以通过自设renderFormItem
属性进行一些性能优化~
🧐 问题描述
pro-table 的 columns 的 valueEnum 枚举值很多(500+)时,点击查询时要等2s才会发送接口请求,很卡顿,体验不太好。 打印了一下日志,页面首次加载时,valueEnum 和 renderText 都执行了进百次,是否能提供一些优化方案?
💻 示例代码
https://codesandbox.io/s/competent-night-co9tp?file=/App.tsx:1238-1247