jetpack compose 这类函数式声明式 UI 要是有一个很深的按钮想要更新很顶层的页面的数据咋办?

2022-07-17 20:37:13 +08:00
 Newyorkcity

我知道声明式编程下,不再持有对某个页面(组件)的对象的引用,然后基于代码(命令)和对该页面(组件)的引用,更新页面的元素。而是让页面基于

val v = remeber{mutableState(...)} 后,通过改变 v 的值,使页面在 v 更新后自动重载,发生变化。

同时采用函数式编程,在 UI 绘制以及 UI 中的事件时,利用函数描述行为即可,可以不用类进行封装。

我的问题是,现在有一个按钮,它在 A 组件中,由 a()声明其存在,a() 在 b() 中被调用(声明),b() 在 c() 中被调用(声明) ……………… y() 在 z() 中被调用(声明),z() 在 App() 中被调用(声明)

这个在 A 组件里的按钮,按下后会将 App() 这一层声明的一个文本 Text(text="$rState.value"){...}的文本内容改掉。

z,y,x,.......,c,b,a 声明函数均不在 App 这个函数内。

那我现在遵循函数式编程,声明式 UI ,要怎么实现呢?让抽象出来的 a,b,c......x,y,z 的声明函数,都接收 rState 作为参数,即便在 b,c,....,x,y,z 声明内都没有操作 rState 的情况下?

谢谢

314 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/866841

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX