vue3:computed

扫码或者点击文字后台提问

原文: https://mp.weixin.qq.com/s/36dd--oj6jmkZblfJRh4iw

computed 支持选项式写法 和 函数式写法

1.选项式写法 支持一个对象传入get函数以及set函数自定义操作

2.函数式写法 只能支持一个getter函数不允许修改值的

复制代码
<template>
  <div>
    <div>
      姓:<input type="text" v-model="firstName">
    </div>
    <div>
      名:<input type="text" v-model="lastName">
    </div>
    <div>
      全名:{{ name }}
    </div>
    <div>
      <button @click="changeName">修改</button>
    </div>
  </div>
</template>
<script setup lang='ts'>
import { ref, computed } from 'vue';
/**
 * computed 支持选项式写法 和 函数式写法
 * 1.选项式写法 支持一个对象传入get函数以及set函数自定义操作
 * 2.函数式写法 只能支持一个getter函数不允许修改值的
 */
let firstName=ref('张');
let lastName=ref('三');

// //1.选项式写法 支持一个对象传入get函数以及set函数自定义操作
// let name=computed<string>({
//   get () {
//     // 读取值操作
//     return firstName.value + '-' + lastName.value
//   },
//   set (newVal) {
//     // 设置值操作
//     [firstName.value,lastName.value] = newVal.split('-')
    
//   }
// });
// const changeName = () => {
//   name.value = '小-田'
// }



//2.函数式写法 只能支持一个getter函数不允许修改值的
let name = computed(() => firstName.value + '-' + lastName.value)
</script>
<style scoped>
</style>
相关推荐
Mr.BoBo.1 年前
Vue3模块找不到问题解决:找不到模块‘vue ‘。你的意思是将“模块解决方案”选项设置为“节点”,还是添加ali
前端·javascript·vue.js·vue3.js
lanmy_dl1 年前
使用elementplus实现文本框的粘贴复制
前端·javascript·elementplus·vue3.js·vue-clipboard3