采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
听老师您讲,react机制是通过浅对比来判断要不要渲染
<Text style={color: 'red'}></Text>
那这样子应该是不会触发渲染的吧?
你举的例子是不符合jsx语法的,正确的写法应该是
<Text style={{color: 'red'}}></Text>
外面一层大括号是jsx设置属性值的语法(不要问为什么),在这个大括号中可以使用任何的js表达式
里面的大括号代表的是一个对象。
这是一个对象的字面量表达式,
如果Text组件所在的组件重新渲染了,那么{color: 'red'}这个对象当然会出现创建一个,Text组件得到的style就不是同一个了,也会触发渲染。
所以RN推荐使用StyleSheet.create来统一管理样式
如果重新创建一个对象,但是通过浅拷贝对比,键和键值还是没变,按道理应该不会让Text重新渲染?react认为还是同一个对象。而不是说是通过指向的地址改变去判断是否需要重新渲染。
你应该理解错了浅拷贝的含义,这里的{color: 'red'}不存在浅拷贝,它每次都会重新创建,每次创建都是不同的对象,只是健值相同而已
是的 理解错了😬😬😬
登录后可查看更多问答,登录/注册
从入门到实战,掌握用TypeScript开发ReactNative应用
1.1k 38
855 21
1.3k 12
925 11
1.1k 11