Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
141 views
in Technique[技术] by (71.8m points)

数组更新渲染过慢

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很多的时候,更新渲染慢啊!!!
有其他的解决方案吗?
跪求,呜呜~~


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...