请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

style对象会触发重新渲染吗?

听老师您讲,react机制是通过浅对比来判断要不要渲染

<Text style={color: 'red'}></Text>

那这样子应该是不会触发渲染的吧?

正在回答 回答被采纳积分+3

1回答

今朝 2022-05-04 22:56:46

你举的例子是不符合jsx语法的,正确的写法应该是

<Text style={{color: 'red'}}></Text>

外面一层大括号是jsx设置属性值的语法(不要问为什么),在这个大括号中可以使用任何的js表达式

里面的大括号代表的是一个对象。

这是一个对象的字面量表达式,

如果Text组件所在的组件重新渲染了,那么{color: 'red'}这个对象当然会出现创建一个,Text组件得到的style就不是同一个了,也会触发渲染。

所以RN推荐使用StyleSheet.create来统一管理样式

0 回复 有任何疑惑可以回复我~
  • 提问者 慕丝4078674 #1
    如果重新创建一个对象,但是通过浅拷贝对比,键和键值还是没变,按道理应该不会让Text重新渲染?react认为还是同一个对象。而不是说是通过指向的地址改变去判断是否需要重新渲染。
    回复 有任何疑惑可以回复我~ 2022-05-04 23:33:41
  • 今朝 回复 提问者 慕丝4078674 #2
    你应该理解错了浅拷贝的含义,这里的{color: 'red'}不存在浅拷贝,它每次都会重新创建,每次创建都是不同的对象,只是健值相同而已
    回复 有任何疑惑可以回复我~ 2022-05-05 09:14:48
  • 提问者 慕丝4078674 #3
    是的 理解错了😬😬😬
    回复 有任何疑惑可以回复我~ 2022-05-05 09:18:39
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信