开启鸿蒙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的全栈,那么你入手鸿蒙的云开发也很容易,基本上无缝衔接,看看有机会的话可以分享一下~

咱们项目中见吧~

相关推荐
喵叔哟1 分钟前
重构代码之取消临时字段
java·前端·重构
还是大剑师兰特42 分钟前
D3的竞品有哪些,D3的优势,D3和echarts的对比
前端·javascript·echarts
王解42 分钟前
【深度解析】CSS工程化全攻略(1)
前端·css
一只小白菜~1 小时前
web浏览器环境下使用window.open()打开PDF文件不是预览,而是下载文件?
前端·javascript·pdf·windowopen预览pdf
方才coding1 小时前
1小时构建Vue3知识体系之vue的生命周期函数
前端·javascript·vue.js
阿征学IT1 小时前
vue过滤器初步使用
前端·javascript·vue.js
王哲晓1 小时前
第四十五章 Vue之Vuex模块化创建(module)
前端·javascript·vue.js
丶21361 小时前
【WEB】深入理解 CORS(跨域资源共享):原理、配置与常见问题
前端·架构·web
发现你走远了1 小时前
『VUE』25. 组件事件与v-model(详细图文注释)
前端·javascript·vue.js
Mr.咕咕1 小时前
Django 搭建数据管理web——商品管理
前端·python·django