VUE3 computed计算值新用法

编程教程 > WEB > Vue.js (307) 2024-11-26 14:39:04

一、函数式写法

在vue2中,computed 写法:

computed:{
 sum(){
  return this.num1+ this.num2
 }
}

 

vue 3中,如果使用选项式API computed使用和写法与vue2相同。

 

vue3中使用组合式API computed的写法

import { ref, computed } from "vue"
export default{
	setup(){
 		const num1 = ref(1)
 		const num2 = ref(1)
 		let sum = computed(()=>{
  				return num1.value + num2.value
 			})
		}
}

调用 computed 时, 传入了一个箭头函数,返回值作为 sum 。相比之前,使用更加简单了。如果需要计算多个属性值,直接调用就可以。如:

let sum = computed(()=>{
		return num1.value + num2.value
})
let mul = computed(()=>{
		return num1.value * num2.value
})

该示例过于简单,看不明白的可在文章后面阅读

完整实例1。

<template>
<div>
 {{num1}} + {{num2}} = {{sum}}
 <br>
 <button @click="num1++">num1自加</button>
 <button @click="num2++">num2自加</button>
</div>
</template>
<script>
import { ref, computed } from "vue"
export default{
	setup(){
 		const num1 = ref(1)
 		const num2 = ref(1)
 		
 		let sum = computed(()=>{
  			return num1.value + num2.value
 		})
 		return {
  			num1,
  			num2,
  			sum
 		}
	}
}
</script>

 

二、options 写法

计算属性默认只有 getter ,在需要的时候也可以提供 setter 。在vue2中用法如下:

computed:{
	mul:{
 		get(){ // num1值改变时触发
  		return this.num1 * 10
 		},
 		set(value){ // mul值被改变时触发
	  	this.num1 = value /10
 		}
	}
}

 

mul 属性是 给num1 放大10,如果修改 mul 的值,则 num1 也随之改变。

在 vue3 中 :

let mul = computed({
	get:()=>{
 	return num1.value *10
	},
	set:(value)=>{
 	return num1.value = value/10
	}
})

这两种写法不太一样,仔细观察区别不大,get 和 set 调用也是一样的。

在此示例中代码简单,如果没太理解,可查看文章后面的

完整实例2

<template>
	<div>
 	{{num1}} + {{num2}} = {{sum}}<br>
 	<button @click="num1++">num1自加</button>
 	<button @click="num2++">num2自加</button>
 	<br>
 	{{num1}} * 10 = {{mul}}
 	<button @click="mul=100">改值</button>
	</div>
</template>
<script>
import { ref, computed } from "vue"
	export default{
		setup(){
 		const num1 = ref(1)
 		const num2 = ref(1)
 		let sum = computed(()=>{
  			return num1.value + num2.value
 		})
 		let mul = computed({
  		get:()=>{
   			return num1.value *10
  		},
  		set:(value)=>{
   			return num1.value = value/10
  			}
 		})
 		return {
  			num1,
  			num2,
  			sum,
  			mul
 		}
	}
}
</script>

评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
一、函数式写法在vue2中,computed 写法:computed:{ sum(){ return this.num1+ this.num2 }} vue 3
前言Vue3 + Vite 打包静态资源使用相对路径 默认配置打包后文件预览相对路径绝对路径 Vue3 静态资源相对路径打包配置方法: 在defineConfi
vue-router 中 routers 定义写法,讨论 require 的使用与否​首先上 routerindex.jsimport Vue from 'vue'import Router f...
vue打包会把vue相关的组件打包到一个文件vendor.*.js(*是个随机数)步骤一 资源引入vue最外层index.html文件引入资源文&lt;body&gtl;     &lt;di...
Vue v-if判断数组长度 searchResultDataList为vue定义的data里面的变量&lt;li  v-if="Object.keys(searchResultDataLis...
1.vue项目中创建global.js创建global.js放于main.js同级目录(可自己随意放)export default {   getToken()   {     retur...
Vue 如何返回上一页(上一个锚点)//...省略 methods:{ goback:function(){ this.$router.go(-1);//...
vue
在初始化完一个vue项目(基于vue-cli 和webpack)之后,我们可以通过 npm run dev来让这个项目跑起来
vue watch监控对象属性变化watch:{ 'object.attr':function attr(value){ //处理操作 } ...
一、前言Vue 2.x 使用期间,我们会创建众多组件,这里我们将讨论一下各个组件直接的相互通讯问题如何解决
一、如何在vue中使用route跳转页面并传递参数this.$router.push({ path: '/path/to/your',query:{param1:value1,param2:va...
一、vue-router路由跳转分为两大类编程式的跳转:router.push声明式的跳转:&lt;router-link&gtl;二、编程式的跳转分为三种1、this.$router.push...
一.vue ref基本用法:本页面获取dom元素$title(t1.vue) &lt;template&gtl; &lt;div id="app"&gtl; &lt;div r...
先说两句官方已经有教程了,为什么还要写这个教程呢?说实话,还真不是我闲着蛋疼,官方的教程真的是太官方了,对于刚入门 Vuex 的童鞋来说,想必看官方的教程
meta字段(元数据)直接在路由配置的时候,给每个路由添加一个自定义的meta对象,在meta对象中可以设置一些状态,来进行一些操作