关于重组作用域有几个问题 #129
-
文章里说 "为什么 Button 不参与重组?",这个不对吧,打断点看内部有重新执行。换一个方式说,内部的Text文案很长,肯定会导致Button重新执行Layout吧(如果没有限定Button宽高或者外部约束啥的) |
Beta Was this translation helpful? Give feedback.
Replies: 5 comments
-
感谢提出 |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
感谢,水波纹动画引起的重组这个明白。还有就是当文本长度变长,Button里面的Surface,Row宽度也会跟着变化,那这个不是重组吗。子view引起父view宽高变化这个是怎么触发的,既然没有触发外层Composable重组,那么是怎么触发重新layout的 |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
大佬对Compose有兴趣的话要不要参与一起研究啊 @Palardin3 ,加我微信13913365856拉你进群啊 |
Beta Was this translation helpful? Give feedback.
这个问题是其实是由于Button的点击波纹效果导致的。
在我们创建Button时,Compose会为我们创建一个交互事件源
这个事件源其中包裹了一个flow实例
再回到之前所调用的evelation方法中,evelation仅有这一个默认实现,他在其中声明了一个协程用于监听事件源,当事件源发送数据时,此时在evelation中创建的interactions这个mutableStateList会发生更新,这也导致了整个evelation方法会发生recompose,并且由于外部依赖于evelation这个composable的返回值,所以外部也会参与到recompose中,也就发生了你所看到的整个Button的recompose
这么说你理解了嘛?