1.子调用父的方法
子组件
父组件
2.使用emitter实现孙子传爷
孙子组件
import emitter from '@ohos.events.emitter';
let event: emitter.InnerEvent = {
eventId: 1,
priority: emitter.EventPriority.HIGH
};
let eventData: emitter.EventData = {
data: {
"state": true,
"item": JSON.stringify(this.item)
}
};
// 孙子组件发送事件
emitter.emit(event, eventData);
爷爷组件
aboutToAppear(): void {
let event: emitter.InnerEvent = {
eventId: 1
};
let callback = (eventData: emitter.EventData): void => {
if (eventData && eventData.data) {
this.item = JSON.parse(eventData.data.item)
this.isShow = eventData.data.state
}
};
// 爷爷组件监听事件
emitter.on(event, callback);
}
3.@Observed和@ObjectLink应用
@Observed
class Person {
age: number = 18
son: Son = new Son()
}
@Observed
class Son {
weight: number = 300
}
@Component
struct MyButton {
@ObjectLink
son: Son
build() {
Column() {
Button('son的weight' + this.son.weight)
.onClick(() => {
// this.son.weight++
})
}
}
}
@Entry
@Component
struct Index {
@State
person: Person = new Person()
build() {
Column() {
MyButton({
son: this.person.son
}).onClick(() => {
// this.person.son.weight++
})
Button('Personde age' + this.person.age)
.onClick(() => {
this.person.age++
})
}
}
}