数组更新渲染过慢

发布于 2022-09-12 03:57:02 字数 327 浏览 13 评论 0

react-hooks组件里,维持了个数组,去map出jsx,但是当数组过多的时候,更新渲染过慢,有其他的解决办法吗?
类似如下

const [arr ,setarr] = useState([1,2,3,4,5])
...
return (<>
arr.map(item=>{
return(<div>{item}</div>)
})
</>)

实际:数据比这多,return的jsx比这复杂很多,每次setarr,全部更新渲染,当arr很多的时候,更新渲染慢啊!!!
有其他的解决方案吗?
跪求,呜呜~~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ˇ宁静的妩媚 2022-09-19 03:57:02
  1. 我们在循环渲染列表时,react建议我们给列表中每一项绑定一个key值第一次渲染时,毕竟有这个多dom元素,渲染的过程是必须的,但是后续更新时,react会根据key值判断是否需要重新渲染该dom
  2. 我们循环渲染的dom内容,应该是抽离成一个子组件,子组件接收相应的属性,并且根据这些属性去渲染,props未发生改变时,本身就不会重新渲染。并且可以通过shouldcomponentupdate或者useMemo去做性能优化
  3. 如果数据真的很多,是否可以考虑做懒加载,第一次只渲染十条数据,后续通过某种交互触发一个事件,再在列表上去追加数据。
唯憾梦倾城 2022-09-19 03:57:02

把list中的每一个item封装成一个hooks组件,然后组件中用useMemo,这样如果数据不变,就不会重新渲染,当然你的数组必须是Array<anyObject>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文