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

全国企业信息网查询平台官网贵阳网站优化公司

全国企业信息网查询平台官网,贵阳网站优化公司,去除wordpress版权信息,网站备案拍照ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态#xff0c;使用if、else和else if渲染对应状态下的UI内容。说明#xff1a;从API version 9开始#xff0c;该接口支持在ArkTS卡片中使用。一、使用规则 支持if、else和else if语句。 if、else if后跟随的条件语句…ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态使用if、else和else if渲染对应状态下的UI内容。说明从API version 9开始该接口支持在ArkTS卡片中使用。一、使用规则 支持if、else和else if语句。 if、else if后跟随的条件语句可以使用状态变量。 允许在容器组件内使用通过条件渲染语句构建不同的子组件。 条件渲染语句在涉及到组件的父子关系时是“透明”的当父组件和子组件之间存在一个或多个if语句时必须遵守父组件关于子组件使用的规则。 每个分支内部的构建函数必须遵循构建函数的规则并创建一个或多个组件。无法创建组件的空构建函数会产生语法错误。 某些容器组件限制子组件的类型或数量将条件渲染语句用于这些组件内时这些限制将同样应用于条件渲染语句内创建的组件。例如Grid容器组件的子组件仅支持GridItem组件在Grid内使用条件渲染语句时条件渲染语句内仅允许使用GridItem组件。二、更新机制 当if、else if后跟随的状态判断中使用的状态变量值变化时条件渲染语句会进行更新更新步骤如下 1.评估if和else if的状态判断条件如果分支没有变化请无需执行以下步骤。如果分支有变化则执行2、3步骤 2.删除此前构建的所有子组件。 3.执行新分支的构造函数将获取到的组件添加到if父容器中。如果缺少适用的else分支则不构建任何内容。 条件可以包括Typescript表达式。对于构造函数中的表达式此类表达式不得更改应用程序状态。三、使用场景1.使用if进行条件渲染 Entry Component struct ViewA {State count: number 0;build() {Column() {Text(count${this.count})if (this.count 0) {Text(count is positive).fontColor(Color.Green)}Button(increase count).onClick(() {this.count;})Button(decrease count).onClick(() {this.count--;})}} } if语句的每个分支都包含一个构建函数。此类构建函数必须创建一个或多个子组件。在初始渲染时if语句会执行构建函数并将生成的子组件添加到其父组件中。 每当if或else if条件语句中使用的状态变量发生变化时条件语句都会更新并重新评估新的条件值。如果条件值评估发生了变化这意味着需要构建另一个条件分支。此时ArkUI框架将 1.删除所有以前渲染的早期分支的组件。 2.执行新分支的构造函数将生成的子组件添加到其父组件中。 在以上示例中如果count从0增加到1那么if语句更新条件count 0将重新评估评估结果将从false更改为true。因此将执行条件为真分支的构造函数创建一个Text组件并将它添加到父组件Column中。如果后续count更改为0则Text组件将从Column组件中删除。由于没有else分支因此不会执行新的构造函数。2.if … else …语句和子组件状态 以下示例包含if … else …语句与拥有State装饰变量的子组件。 Component struct CounterView {State counter: number 0;label: string unknown;build() {Row() {Text(${this.label})Button(counter ${this.counter} 1).onClick(() {this.counter 1;})}} }Entry Component struct MainView {State toggle: boolean true;build() {Column() {if (this.toggle) {CounterView({ label: CounterView #positive })} else {CounterView({ label: CounterView #negative })}Button(toggle ${this.toggle}).onClick(() {this.toggle !this.toggle;})}} } CounterViewlabel为 ‘CounterView #positive’子组件在初次渲染时创建。此子组件携带名为counter的状态变量。当修改CounterView.counter状态变量时CounterViewlabel为 ‘CounterView #positive’子组件重新渲染时并保留状态变量值。当MainView.toggle状态变量的值更改为false时MainView父组件内的if语句将更新随后将删除CounterViewlabel为 ‘CounterView #positive’子组件。与此同时将创建新的CounterViewlabel为 ‘CounterView #negative’实例。而它自己的counter状态变量设置为初始值0。 说明CounterViewlabel为 ‘CounterView #positive’和CounterViewlabel为 ‘CounterView #negative’是同一自定义组件的两个不同实例。if分支的更改不会更新现有子组件也不会保留状态。 以下示例展示了条件更改时若需要保留counter值所做的修改。 Component struct CounterView {Link counter: number;label: string unknown;build() {Row() {Text(${this.label})Button(counter ${this.counter} 1).onClick(() {this.counter 1;})}} }Entry Component struct MainView {State toggle: boolean true;State counter: number 0;build() {Column() {if (this.toggle) {CounterView({ counter: $counter, label: CounterView #positive })} else {CounterView({ counter: $counter, label: CounterView #negative })}Button(toggle ${this.toggle}).onClick(() {this.toggle !this.toggle;})}} }此处State counter变量归父组件所有。因此当CounterView组件实例被删除时该变量不会被销毁。CounterView组件通过Link装饰器引用状态。状态必须从子级移动到其父级或父级的父级以避免在条件内容或重复内容被销毁时丢失状态。3.嵌套if语句 条件语句的嵌套对父组件的相关规则没有影响。 Entry Component struct CompA {State toggle: boolean false;State toggleColor: boolean false;build() {Column() {Text(Before).fontSize(15)if (this.toggle) {Text(Top True, positive 1 top).backgroundColor(#aaffaa).fontSize(20)// 内部if语句if (this.toggleColor) {Text(Top True, Nested True, positive COLOR Nested ).backgroundColor(#00aaaa).fontSize(15)} else {Text(Top True, Nested False, Negative COLOR Nested ).backgroundColor(#aaaaff).fontSize(15)}} else {Text(Top false, negative top level).fontSize(20).backgroundColor(#ffaaaa)if (this.toggleColor) {Text(positive COLOR Nested ).backgroundColor(#00aaaa).fontSize(15)} else {Text(Negative COLOR Nested ).backgroundColor(#aaaaff).fontSize(15)}}Text(After).fontSize(15)Button(Toggle Outer).onClick(() {this.toggle !this.toggle;})Button(Toggle Inner).onClick(() {this.toggleColor !this.toggleColor;})}} }
http://www.zqtcl.cn/news/785321/

相关文章:

  • 中国十大物联网公司广州网站快速排名优化
  • 发帖网站有哪些wordpress提请审批
  • 网页设计网站导航怎么弄红色字体的内蒙古住房与建设厅网站
  • 微信网站什么做百度官网认证
  • 怎么提升网站流量做五金建材市场的网站
  • 网站合作流程h5网站怎么做api对接
  • asp.net 网站 结构手机客户端网站建设
  • 图片网站怎么做SEO参与网站建设注意
  • 网站界面设计案例教程wordpress更新报错
  • Dw做网站怎么加logo如何申请小程序店铺
  • 官方网站下载官方版本wordpress文字可以动的插件
  • 企业网站模板 免费下载网站建设服务采购方案模板下载
  • 在万网申请的域名_需要把万网的账户密码给做网站的吗做鱫视频网站
  • 网站建设360wordpress 音乐下载主题
  • 站群推广wordpress换logo
  • 苏州网站建设丶好先生科技电脑怎样做幻灯片的网站
  • 什么网站可以做线上邀请函大米网络营销推广方案
  • .net做网站实例 贴吧软件开发前景和发展
  • 合肥快速建站模板软件开发文档编制
  • 深圳免费网站设计平板做网站服务器
  • 注册或者浏览社交类网站时不恰当威宁做网站
  • 国外的电商网站有哪些方面沈阳医疗网站制作
  • 那个企业网站是用vue做的网站频道运营怎么做
  • 英语培训学校网站怎么做网站建建设公司和网络自建
  • 无法访问iis网站网站吸引客户
  • 郑州企业网站排名优化wordpress指定文章
  • 南京 网站开发宿州网站建设工作室
  • 龙海市城乡规划建设局网站河南郑州哪里可以做公司网站
  • 网站正能量晚上不用下载进入免费成都网站制作方案
  • 宝安做棋牌网站建设哪家公司便宜jsp网站搭建