HarmonyOS 父组件内有个自定义的类列表,用Grid布局到界面上,GridItem是一个自定义的@Component,如何在父组件控制刷新自定义的@Component
父组件内有个自定义的类列表,用Grid布局到界面上,GridItem是一个自定义的@Component,如何在父组件控制刷新自定义的@Component
大致代码如下
数据类
export default class PrivacyItem1 {
selected: boolean = false;
path: string = '';
}
- 1.
- 2.
- 3.
- 4.
自定义子组件
@Component
export struct PrivacyItemView1 {
private itemWidth = 120;
@Link editMode: boolean;
@State data: PrivacyItem1 = {selected:false, path: ''};
private onSelectChange: ((pi: PrivacyItem1, selected: boolean) => void) | undefined;
private onItemClick:((pi:PrivacyItem1) => void) | undefined;
@State selected:boolean = false;
build() {
RelativeContainer() {
Text(this.data.path).alignRules({
center:{anchor:'__container__',align:VerticalAlign.Center},
middle:{anchor:'__container__',align:HorizontalAlign.Center},
})
if (this.editMode && this.selected) {
Row(){
Image($r('app.media.select')).width(40)
}.width(this.itemWidth).height(this.itemWidth).backgroundColor(0x80000000).justifyContent(FlexAlign.Center)
}
}.width(this.itemWidth)
.height(this.itemWidth)
.border({
width: 1,
color: $r('app.color.lightGrey'),
radius: 6
}).onClick((event) => {
if (this.editMode) {
this.selected = !this.selected;
if (this.onSelectChange!=undefined) {
this.onSelectChange(this.data, this.selected);
}
}else{
if (this.onItemClick != undefined) {
this.onItemClick(this.data);
}
}
})
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
父组件
@Entry
@Component
struct HideFileManager {
@State privacyList: PrivacyItem1[] =
[{ selected: false, path: '1' }, { selected: false, path: '2' }, { selected: false, path: '3' },
{ selected: false, path: '4' }];
@State editMode:boolean = true;
build() {
Column() {
Button('select all').onClick((event) => {
// 这里要如何控制才能 改变子组件列表?
})
Grid() {
ForEach(this.privacyList, (item: PrivacyItem1, i) => {
GridItem() {
PrivacyItemView1({
data: item,
editMode: this.editMode,
onSelectChange: (pi: PrivacyItem1, selected: boolean) => {
pi.selected = selected;
},
onItemClick: (pi: PrivacyItem1) => {
}
})
}
})
}
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
应该如何在 select all 这个按钮的点击事件中,刷新所有的GridItem,让它们内部的selected变量改为true?
HarmonyOS
赞
收藏 0
回答 1
相关问题
HarmonyOS 自定义了一个组件,如何自定义事件?使其能在父组件使用其自定义事件
761浏览 • 1回复 待解决
HarmonyOS 父页面如何调用自定义组件内自定义方法
1057浏览 • 1回复 待解决
HarmonyOS @Component修饰的自定义组件,是否有接口可以destory该自定义组件
723浏览 • 1回复 待解决
如何实现一个自定义的Controller? 自定义的Controller与自定义的组件page如何进行交互?
2741浏览 • 1回复 待解决
如何自定义Component 属性
15982浏览 • 3回复 待解决
@Entry入口Component是否可以继承一个自定义的baseComponent?
1246浏览 • 1回复 待解决
HarmonyOS 两个自定义组件之间怎么调用其中一个自定义组件的方法?
1255浏览 • 1回复 待解决
HarmonyOS 如何在bindsheet内的mybuilder里面传一个自定义全局的Component?
1016浏览 • 1回复 待解决
使用自定义构建函数Buider和自定义组件component的区别是什么
1488浏览 • 1回复 待解决
HarmonyOS 如何在 class 中表示两个自定义组件的父类或者泛型
1158浏览 • 1回复 待解决
HarmonyOS 自定义组件:@Component 的生命周期问题
765浏览 • 1回复 待解决
HarmonyOS 自定义组件的自定义布局 数据的作用域不对
983浏览 • 1回复 待解决
自定义构建函数Buider与自定义组件component的使用区别以及限制是什么
3643浏览 • 1回复 待解决
HarmonyOS 提供一个关于自定义对象类刷新的的Demo
681浏览 • 1回复 待解决
HarmonyOS 想要自定义一个类,其中一个属性为自定义组件,从而实现根据类的实例显示不同组件的功能
568浏览 • 1回复 待解决
HarmonyOS 实现一个自定义分类列表
1153浏览 • 1回复 待解决
HarmonyOS 如何自定义布局组件
716浏览 • 1回复 待解决
如何在自定义函数中创建一个UI组件
2543浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何为自定义组件实现自定义布局?
895浏览 • 1回复 待解决
HarmonyOS 如何以现有组件为父类,继承后再自定义自己的组件
1450浏览 • 2回复 待解决
HarmonyOS 自定义组件父组件如何给子组件传递数据
884浏览 • 1回复 待解决
HarmonyOS 自定义UI组件如何自定义属性方法
1312浏览 • 1回复 待解决
HarmonyOS 如何在自定义@Component中获取屏幕的宽高?
1922浏览 • 1回复 待解决
Grid组件的scrollBar是否支持自定义
3074浏览 • 1回复 待解决
HarmonyOS如何在自定义组件的自定义函数中获取当前的 NavPathStack
1506浏览 • 1回复 待解决
可尝试使用emitter,参考链接:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-emitter-V5#emitteron