V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Newyorkcity
V2EX  ›  问与答

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

  •  
  •   Newyorkcity · 2022-07-17 20:37:13 +08:00 · 312 次点击
    这是一个创建于 662 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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 的情况下?

    谢谢

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3289 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:29 · PVG 21:29 · LAX 06:29 · JFK 09:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.