分享到:
发表于 2024-12-05 17:21:54 楼主 | |
6. 父子组件如何通信? 当前(API 12)状态管理有两个版本 1. 父子单向数据传递 @State+@Prop @Prop装饰的变量可以和父组件建立单向的同步关系。@Prop装饰的变量是可变的,但是变化不会同步回其父组件。 2. 父子双向数据传递 @State+@Link 、@objectLink+@Link 子组件中被 @Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。 3. 跨组件通信 @Provide装饰器和 @Consume装饰器 @Provide和 @Consume,应用于与后代组件的双向数据同步,应用于状态数据在多个层级之间传递的场景。不同于 @Prop和 @Link,@Provide和 @Consume摆脱参数传递机制的束缚,实现跨层级传递。 4. @Observed装饰器和 @ObjectLink装饰器 对于多层嵌套的情况,比如二维数组,或者数组项class,或者class的属性是class,他们的第二层的属性变化是无法观察到的。这就要用到 @Observed/@ObjectLink装饰器 注意:@ObjectLink装饰器不能在 @Entry装饰的自定义组件中使用且 @ObjectLink 装饰的变量不能被赋值,只能对其属性进行赋值操作 7. 兄弟组件如何通信? 1. 通过公共父组件传递 如果两个组件是同一个父组件的子组件,可以通过父组件来传递数据或事件。父组件可以作为中介,将一个子组件的数据或事件传递给另一个子组件。 2. 使用全局状态管理 使用全局状态管理(如 AppStorage、LocalStorage)来存储共享数据。兄弟组件可以独立地读取和更新这个全局状态,从而实现通信。 8. 如何实现页面间的通信? 1. 使用 @Provide和 @Consume装饰器(见6.3) 2. 使用路由跳转传参 import { router } from '@kit.ArkUI'; router.pushUrl({ url: 'pages/Detail', // 目标url params: paramsInfo // 添加params属性,传递自定义参数 }) // 返回指定页面并携带参数 router.back({ url: 'pages/Home', params: { info: '来自Home页' } }); 3. 使用导航跳转传参 this.pageStack.pushPath({ name: "PageOne", param: "PageOne Param" }) this.pageStack.pushPathByName("PageOne", "PageOne Param") 9. Navigation组件跳转和router跳转有什么区别?
总而言之,Navigation 组件在功能上更具丰富性和灵活性,特别是在处理复杂的导航结构、动效和路由管理方面。 而 Router 则提供了更基础的路由跳转功能,适合简单的路由需求。开发者可以根据应用的具体需求和设计选择最合适的路由方案 10. HarmonyOS与Android和iOS有什么区别? HarmonyOS 是华为开发的一个开源、分布式的操作系统。它设计用于多种设备,包括智能手机、平板电脑、智能电视和物联网设备。与Android和iOS的主要区别在于:
|
|
楼主热贴
个性签名:无
|
发表于 2024-12-06 17:43:38 1楼 | |
无论本科、还是学院派出身,如果当下你比较愁工作机会的话,可以看看这个?>>>https://jsj.top/f/o38ijj,前后端测试捞人,待遇还不错,也是大厂 | |
针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员 、 查看帮助 或 给我提意见