Vue选项式和组合式两种方法声明变量以及基本属性的讲解

48,593次阅读
没有评论

共计 3231 个字符,预计需要花费 9 分钟才能阅读完成。

目录

选项式

关于 data

关于 computed

关于 watch

关于 methods

以上几种的区别

组合式

关于 const,var 和 let

关于 ref

关于 reactive


选项式

选项式 声明并使用一个变量的方法如下:

export default {

  data(){

    return{

      message_export_data: ‘hello message_export_data!’

}

  }

}

 

{{message_export_data }}

运行后 ’hello message_export_data!’ 将显示在页面上。

关于 data

Data 中的数据是一个普通的对象,一般需要使用 return 返回数据,使用 return 包裹后,变量只在当前组件中生效,不会影响其他组件。

在其中可以声明多个对象并使用。

示例:

export default {

  data(){

    return{

      obj1:{

        message_export_data: ‘hello message_export_data!’

      },

      obj2:{

        message_export_data: ‘hello obj2:message_export_data!’

      }

    }

  }

}

 

{{obj1.message_export_data }}

 

{{obj2.message_export_data }}

运行结果如下:

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

 除了 data(),vue 常用的属性还有 computed、watch、methods。

关于 computed

当被定义的数据(data 中的)需要经常发生改变时,优先选择使用 computed。

例如:收入 - 指出 = 净收入

export default {

  data(){

    return{

      income : 6000,

      pay_out : 2000    

    }

  },

  computed:{

    net_income(){

      return this.income – this.pay_out

    }

  }

}

 

净收入为:{{net_income }}

运行结果如下:

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

 Computed 优秀的地方在于,如果 computed 依赖的数据发生改变,将会重新进行计算并进行缓存;而当其他数据改变时,computed 并不会重新计算。

关于 watch

是一个监听器,用于监听 data 中的数值变化,watch 中的方法默认是不执行的,只有当监听的数值发生变化时才会执行。

因此不要在 computed 或者 watch 中修改被监听的值,以免发生死循环。

例如下面的例子实现的功能是:

当 a 值增大时,b 值减小,当 a 值减小时,b 值不变。

export default {

  data(){

    return{

      a : 1,

      b : 100,

      change : 0        

    }

  },

  methods:{

    change_a_up(){

      this.a++;

    },

    change_a_down(){

      this.a–;

    }

  },

  watch:{

    a : function(newval,oldvar) {

      this.change = newvaloldvar;

      if(this.change>0){

        return this.b–;

      }else if(this.change0){

        return this.b;

      }

    }

  },

}

  a:{{a}}

  b:{{b}}

   @click=”change_a_up>a++

   @click=”change_a_down>a–

以上例子中,watch 中被监听的 a 携带了一个回调函数,当监听到 a 的值发生变化时,执行了这个回调函数。回调函数的两个参数分别是新值和旧值,以下是运行结果。

需要注意的一点是,watch 中的函数名称必须要和 data 中的属性名一致,watch 是依赖于 data 中的数据去工作的。

关于 methods

用于在 vue 中定义函数,与以上三种不同的是,定义在 methods 中的函数需要被手动调用才可以执行,具体参照“watch”中的例子。

以上几种的区别

  1. methods 里面的函数需要被调用才可以执行。
  2. watch 和 computedcomputed 中的函数必须要用 return 返回,watch 则不必要;watch 更擅长一个数据影响多个数据的场景,而 computed 更擅长多个数据影响一个数据的场景。

组合式

组合式 声明并使用一个变量的方法如下:

 setup>

import {ref } from ‘vue’

const message_import_ref_const = ref(‘hello message_import_ref_const!’)

 

{{message_import_ref_const }}

运行后 ’hello message_import_ref_const!’ 将显示在页面上,注意标签里的 setup,setup 是组合式的标志,所有的组合式都要在 setup 中进行。

在上述代码中,使用了 ref()创建了一个响应式对象。

在 vue 组合式中,我们可以使用 ref()函数或者 reactive() 函数创建一个响应式对象或数组。基本数据类型用 ref 包,引用类型用 reactive 包。

响应式对象其 行为表现与一般对象相似。不同之处在于 Vue 能够跟踪对响应式对象属性的访问与更改操作。

关于 const,var 和 let

const将变量声明为一个常量,不可被修改,并且必须赋初值,不能在声明前使用变量。

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

当企图修改 const 类型的变量时:

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

 发生以下错误:

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

Var声明的变量可以被修改,当未赋初值时输出 undefined,并且不会报错,可以在声明变量前使用变量。Var 允许重复声明,重复声明时值会被覆盖。

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

 Let 声明的变量在相同代码块内不允许重复声明,且只在所在的代码块内有效,在变量声明前不能使用变量,这些特点 const 同样具备。不同的是 let 当未赋初值时输出 undefined,不会报错。

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

总结:

实际使用时,const > let > var

const 大多被用于声明引用数据,let 大多被用于声明基本数据类型。

关于 ref

Vue 为我们提供了一个 ref() 方法来允许我们创建可以使用任何值类型的响应式。

它将传入参数的值包装为一个带.value 属性的对象。

看下面示例:

 setup>

import {ref } from ‘vue’

const num = ref(66)

console.log(num)  // 直接在控制台打印 num

此时控制台的输出如下:

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

将打印 num 改为打印 mun.value:

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

此时的控制台输出:66

而当 ref 在模板标签中作为顶层属性被访问时,它们会被自动解包,例如我们最开始的例子:

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

此时不需要使用.value 也可以得到数据。

同样的,当 ref 被嵌套在一个响应式对象中时,它也会自动解包:

 setup>

import {ref } from ‘vue’

import {reactive } from ‘vue’

const num = ref(66)

const num2 = reactive({

    num

})

console.log(num) // 输出 num 对象

console.log(num.value) // 输出 66

console.log(num2.num)  // 输出 66

遗憾的是,与响应式对象不同,当 ref 作为响应式数组或像 Map 这种原生集合类型的元素被访问时,不会进行解包。

即当 ref 出现在数组或原生集合中时,依旧需要使用 value 获取数据,如下示例:

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

控制台输出如下:

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

关于 reactive

reactive 和 ref 一样,都是用来创建响应式数据。

而 reactive 的参数一般是对象或者数组, 他能够将复杂数据类型变为响应式数据。

当用 reactive 声明基本数据类型时:

const num = reactive(100);

Vue 给出了一个警告:

Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

以上。

原文地址: Vue 选项式和组合式两种方法声明变量以及基本属性的讲解

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-07发表,共计3231字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)