HarmonyOS 鸿蒙Next:这样的数据怎样更新到一个自定义对话框

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:这样的数据怎样更新到一个自定义对话框

////////////////////MainWindow
let m_msg:string=’’;
export {m_msg};
@Entry
@Component
struct MainWindow {
GetData(str:string){ //native 获取的数据

 m_msg= str;

}

/////////////////////Login

import {m_msg} from ‘./MainWindow’; //导入m_msg
@Entry
@CustomDialog
export struct Login{

  

build() {
Column() {
Row() {
Text(m_msg) //可以获取数据,但native更新m_msg后,这个Text没有更新

      }

 }

}

}

这样可以一开始获取MainWindow 数据,但native更新m_msg后,这个Text没有更新,怎样让Text随着m_msg的更新而更新呢?用@State好像是在组件里面用的,在外面用好像不行,请帮一下!




4 回复

[@Link](/user/Link)  m_msg:string=''  //在组件内用

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-link-V5#装饰器使用规则说明

[@Entry](/user/Entry)
[@CustomDialog](/user/CustomDialog)  这俩还能一起用的吗,CustomDialog 不是弹窗吗

你的

MainWindow 和 Login都是[@Entry](/user/Entry)组件,这也不构成父子组件,看你的代码,感觉你这是在MainWindow中给m_msg进行赋值,并且这个赋值动作是一直持续,你跳转后Login,想让MainWindow中的m_msg继续更新,切在Login中获取更新后的值?   

可以确认一下m_msg是否是在持续更新 , 如果你的m_msg确实是在持续更新可以试一下EventHub 或则通过公共事件发布订阅去触发   

 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/common-event-subscription-V5

代码逻辑有点儿怪异,看起来不符合鸿蒙的开发范式。你可是试试父组件和子组件之间通过[@Prop](/user/Prop)、[@Link](/user/Link)做数据的单向、双向同步。

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-prop-V5

在HarmonyOS(鸿蒙)系统中,若要将数据更新到一个自定义对话框,你需要通过以下步骤实现数据绑定和更新机制:

  1. 数据模型定义:首先,在你的代码中定义一个数据模型,用于存储需要显示或更新的数据。

  2. 自定义对话框布局:在XML布局文件中设计你的自定义对话框,确保布局中包含了能够显示数据的组件(如TextView、EditText等)。

  3. 对话框创建与数据绑定:在Java或Kotlin代码中,创建自定义对话框实例,并通过findViewById等方法获取布局中的组件。使用数据绑定技术(如MVVM或传统方式)将你的数据模型与对话框中的组件绑定。

  4. 数据更新:当数据模型中的数据发生变化时,通过数据绑定机制自动更新对话框中的UI组件。如果数据变化是异步的(如网络请求结果),则需要在回调函数中处理数据更新。

  5. 显示对话框:在适当的时候(如用户点击按钮时),通过Dialog类或其子类的方法显示自定义对话框。

确保你的代码逻辑清晰,数据绑定正确,并且对话框在数据更新时能够正确响应。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部