找回密码
 立即注册
科技快报网 首页 科技快报 业界资讯 查看内容
游戏电视迈入3.0时代 京东携手行业合作伙伴推动新标准落地柏林国际电子消费品展览会强化与中国合作伙伴关系,凸显全球创新精神《战地6》免费周将至 华硕X870/B850主板开启限时体验华硕B860主板装机神器 带你围观TGA 2025游戏提名ROG MAXIMUS Z890 APEX主板创DDR5-13322超频新纪录共绘汽车产业全域升级新图景 2026腾易年度汽车盛典圆满落幕以数据为钥 东软解决方案论坛解锁智能世界新密码BOE(京东方)陈炎顺阐释企业发展战略升维路径:“传承、创新、发展”铸就基业长青超擎数智亮相 NVIDIA 中国开发者日2025,携手开发者,探索AI无限前景!智慧医疗里的“中国方案”:开源鸿蒙重塑传统病房体验天马以“创见·新境”开启显示新纪元,11项技术重塑显示行业格局索尼专业校色服务上线:一场由画质引领者发起的“色彩价值”革命海尔机器人与INDEMIND达成战略合作,突破空间智能泛化难关,共创家庭具身AI新生态京东11.11百吋电视销量突破6万台 “超级供应链”引领家电产业升级技术创新带来丰富体验,高通李俨:AI与6G的发展是相辅相成的当算力追逐遇上数据瓶颈:DRAM成AI价值链重构的战略中枢PA官网正式上线,科技企业推动竞技娱乐透明化让AI为我所用!不想用碎片时间学习如何借助AI实现自我提升“电影走着看,VR摸着玩”,龙程VR《星际旅客》全感剧场亮相2025高交会海马云与腾讯云签署战略合作协议 共建AIGC内容创作平台新生态

优维科技低代码-4:聊聊Context 和 State

2022-06-30 16:41:03 来自: 互联网

上一篇文章我们讲述了 EasyMABuilder 中的自定义模板,它是对构件组合的封装,和构件一样是组织 UI 界面结构的可复用单元。

而在低代码平台中,除了组织基本的 UI 界面结构外,还有一项重要的工作是维护和管理数据,特别是来自远端的异步数据、或者动态变更的状态数据。

对此,EasyMABuilder 提供了 Context 和 State 两种数据管理方式。

01 Context

Context 在 EasyMABuilder 中用于管理全局的状态数据,在一个路由页面的生命周期中有效,其数据的初始化可以来自异步的远端请求的结果,也可以是静态声明的,这些数据可以在构件的属性或事件中引用,另一方面,它的值可以在页面的交互过程中按需动态更新,同时引用了相关数据的构件的属性也可以实时地获得更新。

例如,假设我们的页面需要一个显示主机列表的表格,该数据来自 CMDB 中的主机模型,我们可以在页面中声明一个 Context 数据:

然后在该页面的构件中就可以通过表达式来引用这些数据,例如赋值给表格的数据源属性:

另一方面,该状态数据可以在界面的交互过程中按需更新,例如通过某个特定事件来更改其状态数据。假设我们页面中有一个按钮,点击它将保存当前表单中的数据,同时我们希望点击它后立即禁用它,以防止连续点击发生,并在请求完成后恢复按钮状态。我们可以先定义一个 saving 的状态数据,并赋值给按钮的 disabled 属性:

注意我们使用了逗号表达式并前置了字符串 "track context",它提示系统在相关数据变更时自动同步该属性。

接着,我们为按钮添加一个点击事件,并使用 context.replace 的动作,将 CTX.saving 更新为 true:

最后在请求完成的事件中设置回调动作,将 CTX.saving 重新设置为 false。

这样在我们的页面中,点击该按钮后,系统就会自动禁用它,直到请求完成再将按钮状态恢复。

除了上述基本的能力外,Context 还支持对请求返回的数据进行转换、请求的参数来自其他的 Context 等等。

02  State

State 的能力和 Context 几乎完全一致,不同的是,Context 的作用域是整个页面、是全局的,而上一篇文章我们讲到了自定义模板,同一个模板在页面中可能有多个实例,如果直接使用 Context,则多个实例间的数据会互相影响,另外,使用全局的 Context 也会破坏模板的封装,削弱应用的可维护性,并带来潜在的问题。

因此 State 正是为了解决这个问题,它用于管理自定义模板内的数据,其作用域是模板的实例,多个模板实例之间的数据互相隔离,同时,在能力上完全与 Context 对等。State 与 Context 的区别有点像 JavaScript 中的 let/const 与 var。

上文中我们多次使用了「表达式」,和无代码平台不同,低代码平台为了能解决更丰富的应用场景、满足更个性化的需求,仍然离不开代码的编写,包括简单的逻辑计算和数据加工处理,而对于高阶开发者搭建更复杂的应用时,甚至需要不逊色于专业代码的开发体验,对此 EasyMABuilder 提供了对应的代码开发能力。

  免责声明:本网站内容由网友自行在页面发布,上传者应自行负责所上传内容涉及的法律责任,本网站对内容真实性、版权等概不负责,亦不承担任何法律责任。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。

发布者:一米阳光

相关阅读

微信公众号
意见反馈 科技快报网微信公众号