开启鸿蒙HarmonyOS之旅(三:渲染控制、路由)

前言

在之前我们已经完成了ArcTS基础语法的学习,也学习了组件通信

这节我们介绍剩余的较为常用的基础知识,然后下一节直接上项目

需要说的是,我本身用vue很多,也很喜欢它,所以很多知识点我会向vue那里去靠,方便理解

所以希望大家不要介意

好的,我们开始吧~

渲染控制

条件渲染

简单来说,就是动态控制组件的显示与隐藏,类似于vue中的v-if

但是这里写法就是用if、else、else if看起来更像是原生的感觉

效果

循环渲染

我们实际开发中,数据一般是后端返回来的对象格式,对此我们需要进行遍历,或者我们写大量死数据的时候,也不会在组件中去写大量数据,而是通过在外面定义数据,组件內直接遍历即可

这里我们没有写后端,就模拟一下常规的数据

ts 复制代码
@Entry
@Component
struct Father {
  @State data: string[] = ['A','B','C','D']

  build() {
    Row() {
      Column() {
        ForEach(this.data,(i)=>{
          Row(){
            Text(i).fontSize(30)
          }
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

我定义了一个数据data,然后通过ForEach这个函数进行遍历

效果就是这样的

我们简单介绍一下ForEach中需要的参数

这是官方的解释,我们翻译一下

第一个参数:是你想要遍历的数据,是必填的

第二个参数:是你遍历后的内容

第三个参数:类似于vuev-forkey,是一个唯一的值,这样是不是懂了,同时这个参数是选填的

这是官方的概念,就是我说的意思。如果你懂虚拟DOM的话,那么可能更好理解一些

我们改变一下数据,使其更贴近项目中的数据

数据的id主键是后端自动生成的,是唯一的,所以这个类似key值的值一般就是id,当然,具体的名字要看你的项目

效果和上面当然是一样的

关于 LazyForEach:数据懒加载,其实就是在数据量过大的时候,所有数据全部加载出来可能会造成页面卡顿,所以我们只加载一定范围內的(对于手机话,就是当前屏幕大小下的内容数据),这样可以避免不好的用户体验

用法和ForEach差不多,具体用到了咱们可以提一下

路由

到上面为止,基础的语法内容就结束了,然后我会说一下在开发中另外需要用到的基础知识

其中最常见的就是路由了,也可以说是页面之间的跳转

我们基本上就需要知道具体的函数,以及参数传递就可以了

官网提供了很多种跳转方式

  • 网站跳转:Web()
  • 组件跳转(页面):router.pushUrl()
  • 跨应用跳转:call.makeCall(),这是跳转到拨号

这里我们只讨论router.pushUrl()

那么携带参数呢

我们需要params来进行参数传递

然后在demo2页面中用getParams来进行参数接收

现在我们demo中通过paramsdemo2中传递了一个name为shaka的参数,然后demo2中用getParams接受了这个参数,并且将这个值赋值给了Text

结尾

基础部分到这里结束了,如果我想起来有那部分没说的,我会补充到这三篇基础的文章里

接下来我们将会进入到项目中,不会是一个复杂的项目,更像是一个带着大家练手的项目,可以应用一些知识

目前打算用官方的一个小项目给大家讲

因为这个例子不会涉及什么权限,比较简单,适合练手

当然,也不一定就会完全按照这个例子,但是大差不差吧

至于更复杂的app我打算写完后再与大家分享

需要说的是,如果你之前用过微信的云开发,或者是uni的全栈,那么你入手鸿蒙的云开发也很容易,基本上无缝衔接,看看有机会的话可以分享一下~

咱们项目中见吧~

相关推荐
汪子熙14 分钟前
Angular 服务器端应用 ng-state tag 的作用介绍
前端·javascript·angular.js
Envyᥫᩣ23 分钟前
《ASP.NET Web Forms 实现视频点赞功能的完整示例》
前端·asp.net·音视频·视频点赞
Мартин.4 小时前
[Meachines] [Easy] Sea WonderCMS-XSS-RCE+System Monitor 命令注入
前端·xss
昨天;明天。今天。6 小时前
案例-表白墙简单实现
前端·javascript·css
数云界6 小时前
如何在 DAX 中计算多个周期的移动平均线
java·服务器·前端
风清扬_jd6 小时前
Chromium 如何定义一个chrome.settingsPrivate接口给前端调用c++
前端·c++·chrome
安冬的码畜日常6 小时前
【玩转 JS 函数式编程_006】2.2 小试牛刀:用函数式编程(FP)实现事件只触发一次
开发语言·前端·javascript·函数式编程·tdd·fp·jasmine
ChinaDragonDreamer6 小时前
Vite:为什么选 Vite
前端
小御姐@stella6 小时前
Vue 之组件插槽Slot用法(组件间通信一种方式)
前端·javascript·vue.js
GISer_Jing6 小时前
【React】增量传输与渲染
前端·javascript·面试