站在Vue的角度,对比鸿蒙开发中的数据渲染二 原创
头像 leson 2025-10-16 20:02:09    发布
11398 浏览 271 点赞 0 收藏

第二类数字(Number)的操作

2.1普通数字的显示

vue中直接显示


<template>
<div>
    <h3>学习Vue</h3>
    <div>
        {{ num }}
    </div>
</div>

</template>

<script lang="ts" setup>

import  {ref} from  "vue"
const   num  = ref(10)

</script>

Harmony中 有数据类型的约束,是有数字类型的组件中才有用,也不能直接使用

错误一

错误二 Text组件只能放字符串

正确的写法  Text里面接受字符串   height里面接受数字类型  鸿蒙中是强语言数据类型


@Entry
@Component
struct MyString {

  @State  num:number  = 10

  build() {
    Column() {

        Text(`${this.num}`).height(this.num)
      
    }
    .height('100%')
    .width('100%')
  }
}

2.2 数字的计算

vue中 {{}} 两个大括号中可以直接计算  


<template>
<div>
    <h3>学习Vue</h3>
    <div>
        {{ num +n}}
    </div>
</div>

</template>

<script lang="ts" setup>

import  {ref} from  "vue"
const   num  = ref(10)
const  n  = ref(100)

</script>

Harmony中 变量的也可以直接操作,但是也需要组件支持数字类型


@Entry
@Component
struct MyString {

  @State  num:number  = 10;
  @State  n:number  = 100;

  build() {
    Column() {

        Text(`${this.num+this.n}`).height(this.num)

    }
    .height('100%')
    .width('100%')
  }
}

巧妙的使用``   模版字符串 中${}里面可以放表达式计算

2.3 与表单元素的绑定和字符串操作一样

不清楚的看上一篇文章 v-model和$$的故事,注意数据类型的匹配,不然鸿蒙中会报错

再看第三类布尔值(Boolean)的操作

第三类   布尔值(Boolean)的操作

这玩意 实际上也就是对错的操作,对错针对页面就是显示与否,状态有还是没有

3.1  Boolean值的显示

vue中会把布尔值转成字符串输出


<template>
<div>
    <h3>学习Vue</h3>
    <div>
            {{ flag }}
    </div>
</div>

</template>

<script lang="ts" setup>

import  {ref} from  "vue"
let flag = ref(true)

</script>


Harmony中会把布尔值转成字符串输出  

鸿蒙没办法直接输出 boolean 值  放在Text中,Text又只支持string


@Entry
@Component
struct MyString {

  @State flag:boolean = true

  build() {
    Column() {
        Text(`${this.flag}`)
    }
    .height('100%')
    .width('100%')
  }
}

3.2  Boolean判断显示

vue中   用 v-if  v-else-if  v-else 相关的指令


<template>
<div>
    <h3>学习Vue</h3>
    <div>
           <div v-if="flag">显示</div>
           <button @click="change">修改状态</button>
    </div>
</div>

</template>

<script lang="ts" setup>
import  {ref} from  "vue"

const flag = ref(true);

const change  =()=>{
    flag.value  = !flag.value;
}


</script>

Harmony中用 if表达式   里面没有指令了


@Entry
@Component
struct MyString {
  @State flag:boolean = true
  build() {
    Column() {
      if(this.flag){
        Text(`显示`)
      }
      Button("改变").onClick(()=>{
        this.flag  = !this.flag
      })
    }
    .height('100%')
    .width('100%')
  }
}

点击就可以切换了

3.3 Boolean 判断显示2

vue中   v-show的控制   常见vue问题 v-if和v-show的区别


<template>
<div>
    <h3>学习Vue</h3>
    <div>
           <div v-show="flag">显示</div>
           <button @click="change">修改状态</button>
    </div>
</div>

</template>

<script lang="ts" setup>
import  {ref} from  "vue"

const flag = ref(true);

const change  =()=>{
    flag.value  = !flag.value;
}


</script>

区别  if不满足没有真实DOM  show的都会有

Harmony中用 visibility的属性方法来解决  配合三元(三目)运算符


@Entry
@Component
struct MyString {
  @State flag:boolean = true
  build() {
    Column() {

        Text(`显示`).visibility(this.flag? Visibility.Visible:Visibility.Hidden)

      Button("改变").onClick(()=>{
        this.flag  = !this.flag
      })
    }
    .height('100%')
    .width('100%')
  }
}

但是为占位置哟

显示的效果为

不显示的效果为  中间有空行

总结

本文对比了Vue和Harmony(鸿蒙)在数字和布尔值操作上的差异。数字操作方面,Vue可直接在模板中显示和计算数字,而Harmony需要严格遵循数据类型约束,通过模板字符串${}进行表达式计算。布尔值操作上,Vue使用v-if/v-show指令控制显示,Harmony则通过if表达式和visibility属性实现,其中v-show对应visibility属性,会保留DOM位置。文章还指出鸿蒙组件对数据类型的强约束性,如Text组件只接受字符串。两种框架在数据绑定和显示控制上各有特点,需要开发者注意数据类型匹配和语法差异。

未完待续 欢迎加入 鸿蒙学堂 继续学习​


©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS

暂无评论数据

发布

头像

leson

华为HDE,华为伙伴HDE,鸿蒙生态学堂服务学堂认证讲师。14年互联网软件开发经验,资深全栈软件开发工程师,精通HarmonyOS、C#、GoLang 前端等技术栈。曾参与浦发银行、汇丰银行、中国银行强基金系统研发工作,现主要负责湖北高校HarmonyOS实训教学和鸿蒙APP研发工作

16

帖子

0

提问

2348

粉丝

关注
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255