• vue中属性的基本用法


    v-for指令的用法

    v-for指令用于重复输出当前元素。

    案例:写一个新的组件页面:For.vue 当访问: /for时看到它。

    场景1

    遍历字符串数组输出每一个列表项元素:

    1. data: {
    2. nav: ['京东超市','京东家电','秒杀','拍卖','京东生鲜','PLUS会员']
    3. }
      •    <li v-for="item in nav">{{item}}li>

    上述写法,类似于:

    1. for(let i=0; ilength; i++){
    2.    let item = nav[i]
    3.    输出  `
    4. ${item}
    5. `
  • }
  • 场景2

    遍历对象数组输出每一个列表项元素:

    1. data: {
    2. movies: [
    3.       {id:1, name:'交换余生', showingon:'2021-10-10', duration:124},
    4.       {id:2, name:'杀手', showingon:'2022-10-09', duration:114},
    5.       {id:3, name:'功夫', showingon:'2023-1-10', duration:194},
    6.       {id:4, name:'功夫熊猫', showingon:'2011-05-10', duration:141}
    7.   ]
    8. }
    9.    <div v-for="item in movies" :key="item.id">
    10.       ID:{{item.id}}    |  
    11.       名称:{{item.name}}   |  
    12.       上映时间:{{item.showingon}}   |  
    13.       时长:{{item.duration}}分钟
    14.    div>
    拓展1

    在使用v-for遍历输出数组数据的同时,引用数组的下标:

    1. for="(item,i) in movies" :key="item.id">
    2.   ..{{i}} 下标
    拓展2

    纯粹的按照数量重复输出元素:

    for="item in 100" :key="item">内容
    :key的作用

    v-for指令一般都需要配一个v-bind:key(简写 :key)来为每一个列表项设置一个唯一标识符(简单理解为每一个item一个名字)。目的是为了提高列表更新时的DOM渲染性能。如果列表中已经包含很多列表项了,后续由于列表数据的变化需要重新渲染列表时,将会通过:key属性来检测当前需要渲染的列表项是否已经渲染过(比较列表项的key在原始列表中是否已经存在),如果已经渲染过,就不会重新创建DOM了。

    那么一般将什么设置为:key的值?

    1. for="(item,i) in list" :key="item.id">
      id是唯一属性
    2. for="(item,i) in list" :key="i">
      下标 但不建议

    :key的数据类型只能是number和string,不能是对象。同一个列表中的列表项的key不能重复,否则控制台报错。

    Vue中的计算属性

    Vue提供了一种特殊的属性:计算属性(Computed)。这种属性本质上是一个函数(由函数内部计算返回结果)。计算属性可以在template中以属性的语法进行访问。如果计算过程中所需要的变量有变化,则计算属性的结果也将会及时更新。

    1. data() {},
    2. methods: {},
    3. computed: {  // computed中定义计算属性
    4.    totalPrice(){  // 计算属性的本质是个函数   函数名就是计算属性名
    5.        return xxx
    6.   }
    7. }
    8. 计算结果:{{totalPrice}}

    将函数定义在计算属性中(computed)与方法中(methods)的区别。

    如果定义成方法,那么调用时需要: {{ getTotal() }}

    如果定义成计算属性,不需要小括号:{{ totalPrice }}

    如果定义成计算属性,则第一次计算结束后,将会把结果缓存下来,以后直接使用(不去重新计算)。当计算时所涉及到的响应式变量有变化时,才会重新计算 计算属性的结果。

    表单元素的双向数据绑定指令 v-model

    加入有如下输入框:

    1. "name" type="text" placeholder="">
    2. data: {
    3.    name: ''
    4. }

    只需要按照上述写法,即可完成输入框的value属性与data中name之间的双向数据绑定:

    1. 只要有输入框value有变化(输入了数据),name也将更新。

    2. 只要data中的name有变化(js修改了name),那么输入框中的文本也将更新。

    案例:编写一个注册页面:views/Register.vue。提供一个注册表单。

    访问:http://localhost:8080/register看到该注册页面。

    Vue的监听器 Watch

    vue为了更好的监控所管理的响应式变量的变化,提供了数据监听器:watch。通过监听器就可以监听数据的动态改变:一旦被监听的响应式变量的值有变化,就会立即执行相应方法。

    基本语法如下:

    1. data() {
    2. return {
    3. name: ''
    4. }
    5. },
    6. watch: { // 定义监听器
    7.  // 声明一个与被监听变量同名的方法即可监听该变量,且传入两个参数(新值, 旧值)
    8.  name(newValue, oldValue){
    9.      
    10. }  
    11. }

    其他表单组件的双向数据绑定方式

    自定义指令

    1. 文本

    2. <p v-blue>文本p>
    3. directives: {  // 自定义指令
    4.    red: {  // 自定义指令的名字为v-red 示例:
    5.        //当拥有该指令的dom元素被插入到DOM树后,自动执行inserted
    6.        // 并且传入绑定了该指令的DOM对象:el
    7.        inserted(el){
    8.            el.style.color="red"
    9.       }
    10.   }
    11. }

    Axios

    axios是一个网络通讯库,封装了原生的ajax,提供了一些简单的API辅助程序员方便的发送http、https请求。底层基于Promise而设计。

    安装axios
    1. # 在项目目录下安装axios
    2. npm i axios

    在浏览器中测试一个接口是否畅通:

    https://web.codeboy.com/bmdapi/movie-infos?page=1&pagesize=20
    基于axios发送get请求
    1. import axios from 'axios'
    2. let instance = axios.create()
    3. instance({
    4.    url: 'https://web.codeboy.com/bmdapi/movie-infos',
    5.    method: 'GET',
    6.    params: {page:1, pagesize:20}
    7. }).then(res=>{
    8.    res就是正确的响应结果
    9. }).catch(err=>{
    10.    err就是错误的结果
    11. })

    也可以如下发送get请求传参:

    1. import axios from 'axios'
    2. let instance = axios.create()
    3. instance({
    4.    url: 'https://web.codeboy.com/bmdapi/movie-infos?page=1&pagesize=20',
    5.    method: 'GET'
    6. }).then(res=>{
    7.    res就是正确的响应结果
    8. }).catch(err=>{
    9.    err就是错误的结果
    10. })

  • 相关阅读:
    云原生之DevOps
    JVM的内存结构
    第五代验证码的“无感”进化史
    【infiniband】SDR、DDR、QDR、FDR、EDR、HDR、NDR
    日均数亿推送稳定性监控实践 | 得物技术
    备战2024秋招面试题-最左匹配原则、索引失效情况、算法(最长回文子串)
    python 中__init__ 作用
    [C++ 网络协议] I/O流分离所带来的半关闭问题
    TCP 超时重传机制
    python web框架django面试题收藏
  • 原文地址:https://blog.csdn.net/weixin_68522070/article/details/134546348