16_ Vue.js高级指南:条件渲染、列表渲染与数据双向绑定

1. 条件渲染v-if

  • v-if标签直接接收函数或boolean类型变量
    • v-if 为true,则当前元素会进入到dom树
    • v-else会自动执行 前方v-if的取反操作
  • v-show
    • v-show值为true则值展示
    • 值不展示
  • 区别
    • v-if 数据为false 则元素不在dom树种
    • v-show 数据为false 则元素的属性display=none 元素依然在dom树中仅仅是通过css样式控制元素隐藏

在这里插入图片描述

2. 列表渲染v-for

  • v-for迭代式遍历将数据放入一个标签中

在这里插入图片描述

此处爆红没有问题,是vscode编译器认为我此处出错

3. 数据双项绑定v-model

  • 之前的绑定都是单向绑定
    • 单项绑定:用户在界面上 改变其数据不会影响到原变量数据
    • 双项绑定:用户在界面上 改变其数据会同步修改原变量数据(一般都用于表单标签)
  • 双项绑定可以认为是收集表单信息的命令

在这里插入图片描述

<script setup type="module">
    import {ref} from 'vue' 
    let message =  ref("zhangsan")
</script>
<template>
    <div>
        <input type="text" v-model="message"> <br>
        {{ message }}
    </div>
</template>
  • 绑定表单数据
<script type="module" setup>

  //引入模块
  import { reactive,ref} from 'vue' 
  let hbs = ref([]); //装爱好的值
  let user = reactive({username:null,password:null,introduce:null,pro:null})   
  function login(){
    alert(hbs.value);
    alert(JSON.stringify(user));
  }
  function clearx(){
    //user = {};// 这中写法会将数据变成非响应的,应该是user.username=""
    user.username=''
    user.password=''
    user.introduce=''
    user.pro=''
    hbs.value.splice(0,hbs.value.length);;
  }
</script>

<template>
  <div>
      账号: <input type="text" placeholder="请输入账号!" v-model="user.username"> <br>
      密码: <input type="text" placeholder="请输入账号!" v-model="user.password"> <br>
      爱好: 
        吃 <input type="checkbox" name="hbs" v-model="hbs" value=""><input type="checkbox" name="hbs" v-model="hbs" value=""><input type="checkbox" name="hbs" v-model="hbs" value=""><input type="checkbox" name="hbs" v-model="hbs" value="">
      <br>
      简介:<textarea v-model="user.introduce"></textarea>
      <br>
      籍贯:
          <select v-model="user.pro">
            <option value="1"></option>
            <option value="2"></option>
            <option value="3"></option>
            <option value="4"></option>
            <option value="5"></option>
            <option value="6"></option>
          </select> 
      <br>
      <button @click="login()">登录</button> 
      <button @click="clearx()">重置</button>
      <hr>
      显示爱好:{{ hbs }}
      <hr>
      显示用户信息:{{ user }}
  </div> 
</template> 

<style scoped>
</style>

4. 计算属性

  • computed需要单独导入
import{ref,reactive,computed} from "vue"
  • 计算属性的作用,可以将一个函数 的计算结果赋值给一个变量使用
  • 计算属性就是由别的属性计算而来

在这里插入图片描述

取代了传统的调用方法返回值的行为

  • 性能方面,计算属性的性能优于 方法返回()

Appendix

  • 关于JS和TS选择
TS是JS的一个超集,使用TS之后,JS的语法更加的像JAVA,实际开发中用的确实更多,那么这里为什么我们没有立即使用TS进行开发,原因如下
  • 响应式数据&&非响应式数据

  • 响应数据:在数据变化时候,dom树跟着更新

  • 非响应数据:在数据变化的时候,dom树不跟着变化

  • vue3中,数据需要通过ref/reactive函数的处理才是响应式的;

  • ref/reactive函数导入就能用,vue自带;

 import {ref,reactive} from 'vue'
  • ref函数的特征

    • 在script标签中,操作ref 的响应式数据需要通过.value的形式操作
    • 在template标签中,操作ref直接用即可
  • .vue模块是放到index文件的一个原材料

  • main.js删除了会影响页面显示

  • button标签没有value值,直接在标签中写值即可

  • 导入ref还非得加{},否则无法使用

import {ref} from  'vue'
  • 关于html样式设计;两个div块进行并排,使用浮动操作,宽度使用% 别用像素进行处理即可;

  • @click@sendMenu的值应该是一个JavaScript表达式,它定义了当事件发生时应该执行的函数。所以调用函数时候不带括号;

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值