Newyorkcity
V2EX  ›  问与答

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

  •  
  •   Newyorkcity · Jul 17, 2022 · 716 views
    This topic created in 1439 days ago, the information mentioned may be changed or developed.

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

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

    谢谢

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5081 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:19 · PVG 17:19 · LAX 02:19 · JFK 05:19
    ♥ Do have faith in what you're doing.