是因为React在比较props和state时,使用的是浅比较(shallow comparison)的方式。当父组件传递给子组件的props中包含一个数组属性时,如果该数组的引用没有发生变化,即使数组中的元素发生了改变,React并不会触发子组件的重新渲染。
这是因为React在进行props比较时,只会比较引用是否相同,而不会深入比较数组中的每个元素。这样可以提高性能,避免不必要的重新渲染。但同时也带来了一个问题,即当数组属性发生变化时,如果希望子组件能够重新渲染,需要采取一些额外的措施。
解决这个问题的方法有多种,以下是一些常见的做法:
总结起来,当数组属性发生变化时,React子组件不会重新呈现是因为React使用浅比较来比较props和state。为了解决这个问题,可以使用不可变数据结构、添加key属性或者手动实现shouldComponentUpdate方法来触发子组件的重新渲染。
领取专属 10元无门槛券
手把手带您无忧上云