VUE3 computed计算值新用法

编程教程 > WEB > Vue.js (345) 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...
概述Vue3 + Vite 打包整合到Spring boot项目,两种模式。单一项目和多重项目单一项目:vue 单一项目整合到一个Spring Boot 项目多
Vue v-if判断数组长度 searchResultDataList为vue定义的data里面的变量&lt;li  v-if="Object.keys(searchResultDataLis...
在初始化完一个vue项目(基于vue-cli 和webpack)之后,我们可以通过 npm run dev来让这个项目跑起来
vue watch监控对象属性变化watch:{ 'object.attr':function attr(value){ //处理操作 } ...
Vue 如何返回上一页(上一个锚点)//...省略 methods:{ goback:function(){ this.$router.go(-1);//...
vue
在初始化的Vue项目中,我们最先接触到的就是main.js,App.vue,index.html这三个文件,从下面创建的一个空白项目中可以看到:​关于三个文件的说明如下:index.html---主页
vue
vue打包会把vue相关的组件打包到一个文件vendor.*.js(*是个随机数)步骤一 资源引入vue最外层index.html文件引入资源文&lt;body&gtl;     &lt;di...
1.vue项目中创建global.js创建global.js放于main.js同级目录(可自己随意放)export default {   getToken()   {     retur...
一、前言Vue 2.x 使用期间,我们会创建众多组件,这里我们将讨论一下各个组件直接的相互通讯问题如何解决
一、vue-router路由跳转分为两大类编程式的跳转:router.push声明式的跳转:&lt;router-link&gtl;二、编程式的跳转分为三种1、this.$router.push...
一、如何在vue中使用route跳转页面并传递参数this.$router.push({ path: '/path/to/your',query:{param1:value1,param2:va...
Docker Nodejs 18.20.4 环境编译vue项目 sudo docker run --rm --name node18c -v /your/pro