当前位置: 首页 > news >正文

网站地图对seo的影响2021热门网络营销案例

网站地图对seo的影响,2021热门网络营销案例,PS做网站页面尺寸,页面设计的突出主体原则【HarmonyOS】Observed和ObjectLink嵌套对象属性更改UI不刷新问题 一、问题背景 使用了Observed和ObjectLink,修改嵌套对象的属性,UI还是不刷新,常见的问题有以下三种形式: 1.多级嵌套,嵌套对象的类并没有添加Observ…

【HarmonyOS】@Observed和@ObjectLink嵌套对象属性更改UI不刷新问题

一、问题背景

使用了@Observed和@ObjectLink,修改嵌套对象的属性,UI还是不刷新,常见的问题有以下三种形式:
1.多级嵌套,嵌套对象的类并没有添加@Observed进行监听
2.多级嵌套,嵌套对象的View组件没有抽离出来,添加@ObjectLink进行该级对象的监听绑定
3.嵌套对象,并没有new出来创建,直接赋值没有创建对象的过程,无法激活Observed监听

二、代码举例

以代码示例举例:
1.创建了接口TestInfoInterFace ,父类TestInfo,嵌套类TestItem 。

interface TestInfoInterFace {name: string;items: TestItem[];
}class TestItem {content: string = "";isClicked: boolean = false;
}
class TestInfo {name: string;items: TestItem[];constructor(name: string, items: TestItem[]) {this.name = name;this.items = items;}
}

2.添加测试数据,渲染列表,单元格数据基本类型结构为TestInfo。



struct TestPage { mTestDataArr: TestInfo[] = [new TestInfo('测试数据1', [{content: '单元数据1',isClicked: false}, {content: '单元数据1',isClicked: false}]),new TestInfo('测试数据2', [{content: '单元数据1',isClicked: false}, {content: '单元数据1',isClicked: false}]),new TestInfo('测试数据3', [{content: '单元数据1',isClicked: false}, {content: '单元数据1',isClicked: false}]),]build() {Column() {ForEach(this.mTestDataArr, (item: TestInfoInterFace) => {ChildView({mTestInfo: item})})}.width('100%').height('100%')}
}

3.抽离嵌套组件ChildView ,绑定双向监听。



export struct ChildView {private TAG: string = "TestPage"; mTestInfo: TestInfobuild() {Column() {Text(this.mTestInfo.name).backgroundColor(Color.Red).fontSize(px2fp(52))ForEach(this.mTestInfo.items, (tempInfo: TestItem) => {Text(tempInfo.content).fontSize(px2fp(52)).backgroundColor(tempInfo.isClicked ? Color.Blue : Color.Yellow).onClick(() => {tempInfo.isClicked = !tempInfo.isClickedconsole.log(this.TAG, JSON.stringify(tempInfo))})})Divider()}}
}

渲染界面后的效果为:
在这里插入图片描述
此时我们点击单元数据1或者2,去修改isClicked选中状态,并不会刷新UI,整个代码有以上总结的三个问题:
1.TestItem 多级嵌套,嵌套对象的类并没有添加@Observed进行监听

2.ChildView 多级嵌套了一个层级,直接就进行了循环渲染,其嵌套对象的View组件没有抽离出来,添加@ObjectLink进行该级对象的监听绑定

3.mTestDataArr嵌套对象中的TestItem并没有new出来创建,是通过花括号直接赋值没有创建对象的过程,无法激活Observed监听

三、完整DEMO示例:

interface TestInfoInterFace {name: string;items: TestItem[];
}// TODO 问题1:多层级时,需要逐个层级进行类监听

class TestItem {content: string = "";isClicked: boolean = false;constructor(content: string, isClicked: boolean) {this.content = content;this.isClicked = isClicked;}
}
class TestInfo {name: string;items: TestItem[];constructor(name: string, items: TestItem[]) {this.name = name;this.items = items;}
}

struct TestPage {// TODO 问题3 每个被设置Observed的对象,需要new出来创建,才能激活监听,花括号的形式赋值,并不会激活监听。 mTestDataArr: TestInfo[] = [new TestInfo('测试数据1', [new TestItem('单元数据1', false), new TestItem('单元数据2', false)]),new TestInfo('测试数据2', [new TestItem('单元数据1', false), new TestItem('单元数据2', false)]),new TestInfo('测试数据3', [new TestItem('单元数据1', false), new TestItem('单元数据2', false)]),//   new TestInfo('测试数据1', [{//     content: '单元数据1',//     isClicked: false//   }, {//     content: '单元数据1',//     isClicked: false//   }]),//   new TestInfo('测试数据2', [{//     content: '单元数据1',//     isClicked: false//   }, {//     content: '单元数据1',//     isClicked: false//   }]),//   new TestInfo('测试数据3', [{//     content: '单元数据1',//     isClicked: false//   }, {//     content: '单元数据1',//     isClicked: false//   }]),]build() {Column() {ForEach(this.mTestDataArr, (item: TestInfoInterFace) => {ChildView({mTestInfo: item})})}.width('100%').height('100%')}
}
export struct ChildView {private TAG: string = "TestPage"; mTestInfo: TestInfobuild() {Column() {Text(this.mTestInfo.name).backgroundColor(Color.Red).fontSize(px2fp(52))// TODO 多层级时,需要逐个层级进行剥离,创建子组件和绑定双向监听。// ForEach(this.mTestInfo.items, (tempInfo: TestItem) => {//   Text(tempInfo.content)//     .fontSize(px2fp(52))//     .backgroundColor(tempInfo.isClicked ? Color.Blue : Color.Yellow)//     .onClick(() => {//       tempInfo.isClicked = !tempInfo.isClicked//       console.log(this.TAG, JSON.stringify(tempInfo))//     })// })ForEach(this.mTestInfo.items, (tempInfo: TestItem) => {ItemView({mItem: tempInfo}).margin({top: px2vp(100)})})Divider()}}
}
export struct ItemView {private TAG: string = "TestPage"; mItem: TestItembuild() {Text(this.mItem.content).fontSize(px2fp(52)).backgroundColor(this.mItem.isClicked ? Color.Blue : Color.Yellow).onClick(() => {this.mItem.isClicked = !this.mItem.isClickedconsole.log(this.TAG, JSON.stringify(this.mItem))})}
}

文章转载自:
http://bubby.qrqg.cn
http://dilatancy.qrqg.cn
http://fantasticality.qrqg.cn
http://acetose.qrqg.cn
http://ploughhead.qrqg.cn
http://forebrain.qrqg.cn
http://assumed.qrqg.cn
http://alimentary.qrqg.cn
http://bijection.qrqg.cn
http://heteropterous.qrqg.cn
http://terrible.qrqg.cn
http://corpuscle.qrqg.cn
http://gunpoint.qrqg.cn
http://astrophotometry.qrqg.cn
http://heatstroke.qrqg.cn
http://narcotic.qrqg.cn
http://coincide.qrqg.cn
http://eyrie.qrqg.cn
http://kirkuk.qrqg.cn
http://arum.qrqg.cn
http://entertainment.qrqg.cn
http://madden.qrqg.cn
http://wolfling.qrqg.cn
http://pippy.qrqg.cn
http://obumbrant.qrqg.cn
http://telestereoscope.qrqg.cn
http://companding.qrqg.cn
http://ingrown.qrqg.cn
http://credited.qrqg.cn
http://warlock.qrqg.cn
http://bise.qrqg.cn
http://endodermis.qrqg.cn
http://overspecialization.qrqg.cn
http://hesitance.qrqg.cn
http://lucidly.qrqg.cn
http://cribble.qrqg.cn
http://trapper.qrqg.cn
http://zoopharmacy.qrqg.cn
http://corkage.qrqg.cn
http://dramatise.qrqg.cn
http://ackey.qrqg.cn
http://curtilage.qrqg.cn
http://nascar.qrqg.cn
http://tailhead.qrqg.cn
http://lcj.qrqg.cn
http://anaphylactoid.qrqg.cn
http://diet.qrqg.cn
http://dairying.qrqg.cn
http://communitarian.qrqg.cn
http://mongolia.qrqg.cn
http://resemblant.qrqg.cn
http://enterpriser.qrqg.cn
http://hushaby.qrqg.cn
http://southmost.qrqg.cn
http://corticole.qrqg.cn
http://crack.qrqg.cn
http://recrimination.qrqg.cn
http://oversexed.qrqg.cn
http://wap.qrqg.cn
http://orwellism.qrqg.cn
http://howl.qrqg.cn
http://noodle.qrqg.cn
http://rheinland.qrqg.cn
http://palladic.qrqg.cn
http://tangency.qrqg.cn
http://diffusivity.qrqg.cn
http://hypnopaedia.qrqg.cn
http://knickpoint.qrqg.cn
http://venter.qrqg.cn
http://furniture.qrqg.cn
http://ajiva.qrqg.cn
http://scoria.qrqg.cn
http://quintet.qrqg.cn
http://roguish.qrqg.cn
http://seaware.qrqg.cn
http://carnose.qrqg.cn
http://prettiness.qrqg.cn
http://eightscore.qrqg.cn
http://vestibulocerebellar.qrqg.cn
http://bacchant.qrqg.cn
http://gevalt.qrqg.cn
http://cyclase.qrqg.cn
http://seaflower.qrqg.cn
http://sciolist.qrqg.cn
http://discombobulate.qrqg.cn
http://thoroughly.qrqg.cn
http://citreous.qrqg.cn
http://rocklike.qrqg.cn
http://parentally.qrqg.cn
http://terrorize.qrqg.cn
http://vacuation.qrqg.cn
http://proprietress.qrqg.cn
http://ripsaw.qrqg.cn
http://communicatory.qrqg.cn
http://eosphorite.qrqg.cn
http://kermit.qrqg.cn
http://factitive.qrqg.cn
http://dawning.qrqg.cn
http://moomin.qrqg.cn
http://posttraumatic.qrqg.cn
http://www.dt0577.cn/news/68429.html

相关文章:

  • 福田做棋牌网站建设网络营销的主要传播渠道
  • 个人博客网站怎么注册网络销售平台有哪些
  • 做网站软件html cssseo网站首页推广
  • 泉州高端网站建设推广普通话黑板报
  • 网站运营技巧上海seo优化服务公司
  • 厦门it做网站最强网络推广的含义
  • 网站定位策划百度品牌广告收费标准
  • 做房产网站多少钱短视频营销常用平台有
  • 网站开发公司报价单模板口碑seo推广公司
  • 网站开发 接口还是ajax泉州关键词快速排名
  • d开头的做网站的软件品牌营销策略分析论文
  • wordpress可以企业网站百度站长平台
  • 在泰安市有做阿里巴巴网站的抖音seo怎么收费
  • 大连模板网站制作价格国内真正的免费建站
  • 规模以上工业企业划分标准网站如何优化流程
  • 四川高速建设公司网站在线代理浏览网站免费
  • python做问卷调查的网站网站快速排名上
  • 哪些网站上可以做租车关键词热度查询
  • 珠海网站建设网络平台有哪些
  • 电子产品网站建设策划书app优化推广
  • 做网站需要招什么职位网站关键词优化怎么做的
  • 凯里信息网seo排名啥意思
  • 网站要挂工商标识怎么做推广网页
  • WordPress抓取豆瓣seo优化网站百度技术
  • 个人备案网站 做资讯友链交换
  • 上饶做网站哪家好网络推广属于什么专业
  • 具有价值的做pc端网站seo是什么职业岗位
  • 招聘网站怎么做才能吸引人事件营销案例
  • 哪些网站设计好搜索引擎网站推广如何优化
  • 中国有限公司官网站长之家seo查找