首页 > 编程语言 >Java登陆第三十七天——VUE3响应式基础、条件渲染、列表渲染

Java登陆第三十七天——VUE3响应式基础、条件渲染、列表渲染

时间:2024-04-04 17:45:12浏览次数:22  
标签:vue Java reactive age 渲染 响应 第三十七 ref

响应式数据

什么是响应式数据?
	当数据发生改变时,DOM树的内容,会和数据同步更新。
	vue3不是自动响应式数据,需要经过函数处理得到响应式数据对象。

ref和reactive

这两个函数都会返回响应式数据对象,但也有不同。

ref

ref通常用于将一个基本类型转为响应式数据对象。

基本类型包括:数、字符串、布尔值、null和undefined。

读写值(访问和修改属性值)

  • 在script标签中,通过该对象.value属性,读写值。

  • 在template标签中,直接访问该对象,读写值。

栗子

App.vue

<script setup>
//ref,reactive
import {ref, reactive} from 'vue'
//虽然ref和reactive都是响应式数据函数,但ref更常用于基本类型,reactive更常用于对象。
let str1 = ref(10);
let str2 = ref("msg");
</script>

<template>
<!--在事件绑定中,可以直接写一些简单的处理器-->
  <h3 v-text="str1"></h3>
  <button @click="str1++">按钮1</button>
  <h3 v-text="str2"></h3>
  <button @click="str2='hello'">按钮2</button>
</template>

<style scoped>
</style>

效果展示
image

reactive

reactive通常用于将一个对象转为响应式数据对象。

对象包括:数组,对象等。

读写值(访问和修改属性值)

可以直接访问该对象读写值。

栗子

App.vue

<script setup>
//ref,reactive
import {ref, reactive} from 'vue'
//虽然ref和reactive都是响应式数据函数,但ref更常用于基本类型,reactive更常用于对象。
//对象
let str3 = reactive({name: "张三", age: 18});
//数组
let str4 = reactive([ {name: "张三", age: 18}, {name: "李四", age: 18}, {name: "王五", age: 18} ]);
</script>

<template>
  <!--在事件绑定中,可以直接写一些简单的处理器-->
  <h3>{{str3.age}}</h3>
  <button @click="++str3.age">按钮1</button>
  <h3 v-text="str4"></h3>
</template>

<style scoped>
</style>

效果展示(栗子中去掉了ref的代码)
image

可以发现str4展示的好丑啊。没关系,在列表渲染中可以展示的更加完善。

条件渲染

条件渲染专门负责布尔表达式被满足时,才展示的数据/标签。

提供了三种条件渲染命令:v-if、v-else和v-show

语法格式如下:

<标签 v-if=" 布尔表达式 "></标签>
	<标签 v-else=" 与v-if的布尔表达式相反 "></标签>
//类似于Java中的if和else

<标签 v-show=" 布尔表达式 "></标签>

条件渲染的特点:

  1. 同Java一样,v-else不能单独出现,必须跟随v-if。

  2. 某个标签的v-if的布尔表达式不被满足时,DOM树中不会出现该标签。

  3. 某个标签的v-show的布尔表达式不被满足时,DOM树中依然会出现该标签,只是display属性为none。

栗子

App.vue

<script setup>
import {ref} from 'vue';
//响应式数据,及时更新dom树
let flag = ref(true);
</script>

<template>
  <!--展示条件渲染2、3特点-->
  <h3 v-if="false">hello v-if!</h3>
  <h3 v-show="false">hello v-show!</h3>

  <h3 v-if="flag">hello world!我是flag为T</h3>
  <h3 v-else>hello world!我是flag为F</h3>
  <button @click="flag = !flag">切换flag</button>
</template>

<style scoped>
</style>

效果展示
image
当v-if的布尔表达式不成立时,DOM树中不会出现该内容。

列表渲染

列表渲染可以遍历。经常基于一个数组对象来渲染一个列表。

提供了一种列表渲染命令:v-for

语法格式如下:

<标签 v-for="item in items"></标签>

文本渲染的特点:

  1. item in items类似与Java的foreach,只不过冒号变成了in。

  2. 官方不推荐在同一个标签内,和v-if一起使用。

注意是同一个标签内。可以是上下级标签。

栗子

App.vue

<script setup>
import {ref, reactive} from 'vue';
//响应式基础的str4
let per = reactive([{name: "张三", age: 18}, {name: "李四", age: 18}, {name: "王五", age: 18}]);
</script>

<template>
  <table>
    <tr>
      <th>姓名</th>
      <th>年龄</th>
    </tr>

    <tr v-for="p in per">
      <td v-text="p.name"></td>
      <td v-text="p.age"></td>
    </tr>

  <!--这种写法虽然生效,但是官方不推荐。降低了可读性-->
    <tr v-if="per.length>0" v-for="p in per">
      <td>per数组是空的</td>
    </tr>
    
    <!--使用了上级标签div,推荐,增加了可读性。-->
    <div v-if="per.length>0">
      <tr v-for="p in per">
        <td v-text="p.name"></td>
        <td v-text="p.age"></td>
      </tr>
    </div>
    
  </table>
</template>

<style scoped>
</style>

效果展示
image

标签:vue,Java,reactive,age,渲染,响应,第三十七,ref
From: https://www.cnblogs.com/rowbed/p/18114409

相关文章

  • JAVA语言学习-Day3
    参考教学视频:秦疆Day3面向对象什么是面向对象面向过程:第一步做什么,第二步做什么面向对象:分类的思维模式,分类然后对某个分类下的细节进行面向过程的思索(以类的形式组织代码,以对象的方式组织(封装)数据)static:和类一起加载构造器必须和类的名字相同必须没有返回值类型,也不......
  • 03-Java框架FTPClient 使用rename()移动文件和文件重命名
    1需求由于业务种种原因,现在需要将ftp中已存文件移动到其它文件夹。2初始策略一开始走上弯路,直接翻看FTPClientAPI有无move方法,但没发现:于是曲线救国,想着采用先复制、再删除,伪代码:InputStreaminputStream=ftpClient.retrieveFileStream("/AAA/test.txt");ftpClient.st......
  • Java 程序执行过程
    Java程序的执行过程Tips:对于java程序的执行的过程,参考了两张图片来理解,并主要参照图2进行讲解!(这里不对具体的内容进行详细讲解,对于具体的内容,将给出参考的链接)图1:JVMModel图2:Java运行流程java的执行可以分为编译和运行两个阶段,分别对应着图2的左侧和右侧部分这部分我......
  • JAVA IO流学习1
    目标:File类:File类是java.io包中很重要的一个类File类的对象可以代表一个文件或者目录,可以修改文件大小、文件最后修改日期、文件名等File对象不能操作文件的具体数据,即不能对文件进行读和写的操作File的构造方法:File(Stringpathname) -------指定文件(目录)名和路径创建......
  • Java:多线程-继承Thread类
    在Java中,通过继承Thread类是实现多线程的一种方式。这种方式允许你创建自己的线程类,并定义线程执行的具体内容。以下是关于继承Thread类的详细讲解:继承Thread类的步骤创建线程类:创建一个继承自Thread的子类。重写run方法:在子类中重写run方法,定义线程执行的任务。run方法是......
  • Java:多线程相关知识概念
    Java中的多线程是指在单个程序中并行执行多个线程(即执行路径或任务)的能力。多线程在Java中是一个核心概念,它允许应用程序更有效地利用CPU资源,同时还能进行并发操作。以下是Java中多线程相关的详细知识:线程的基本概念线程(Thread):是操作系统能够进行运算调度的最小单位。它......
  • Java解决跨域问题
    importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotation.CorsRegistry;importorg.springframework.web.servlet.config.annotation.WebMvcCo......
  • java计算机毕业设计(附源码)音乐播放平台(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着数字时代的到来,音乐播放平台已经成为了人们生活中不可或缺的一部分。这些平台通过互联网提供了大量的音乐资源,使得用户可以随时随地欣赏到自己喜欢的......
  • java计算机毕业设计(附源码)音乐播放器app(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当今的数字化时代,音乐已经成为人们日常生活中不可或缺的一部分。随着智能手机和移动互联网的普及,音乐播放器app应运而生,为人们提供了随时随地欣赏音乐......
  • Java 标识符&关键字
    关键字关键字(Keywords)在编程语言中具有特殊意义的保留字。它们是语言的基础构建块,用于定义程序的结构和逻辑。在Java中,关键字共有53个。这些关键字具有特殊的语法含义,不能用作标识符(例如变量名、类名、方法名等),因为它们在Java中已经有了特定的用途。Java中关键字有以下几......