首页 > 其他分享 >[Vue]计算属性computed

[Vue]计算属性computed

时间:2023-10-23 10:16:20浏览次数:48  
标签:arr Vue set computed get full 属性 name

计算属性:
    1. 定义: 要用的属性不存在,要通过已有属性计算得来。
    2. 原理: 底层借助了 Objcet.defineProperty 方法提供的 getter 和 setter 。
    3. get 函数什么时候执行?
        (1). 初次读取时会执行一次。
        (2). 当依赖的数据发生改变时会被再次调用。
    4. 优势: 与 methods 实现相比,内部有缓存机制(复用),效率更高,调试方便。
    5. 备注:
        (1). 计算属性最终会出现在 vm 上,直接读取使用即可。
        (2). 如果计算属性要被修改,那必须写 set 函数去响应修改,且 set 中要引起计算时依赖的数据发生改变。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="lib/vue-2.5.9.js"></script>
    <title>姓名案例3-computed</title>
</head>
<body>
    <div id="root">
        姓:<input type="text" v-model="first_name">
        <br>
        名:<input type="text" v-model="last_name">
        <br>
        <p>----&gt; {{ full_name }}</p>
        <p>----&gt; {{ full_name }}</p>
        <p>----&gt; {{ full_name }}</p>
        <p>----&gt; {{ full_name }}</p>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#root",
        data: {
            first_name: '',
            last_name: '',
        },
        computed: {
            full_name: {
                // get有什么作用? 当有人读取fullName时,get就会被调用,且返回值就作为fullName的值
                // get什么时候调用? 1.初次读取fullName时。2.所依赖的数据发生变化时。
                get: function () {
                    console.log('get被调用了')
                    return this.first_name + '-' + this.last_name
                },
                set: function (value) {
                    // 需要输入的全名格式为“姓-名”,暂不对不符合规范的输入进行限制
                    // set什么时候调用? full_name被修改时。
                    const arr = value.split('-')
                    console.log('arr--->', arr)
                    this.first_name = arr[0]
                    this.last_name = arr[1]
                }
            }
        },
        methods: {
        }
    })
</script>
</html>

 

当计算属性只需要get不需要set时,可以简写:
full_name2: function(){
    console.log('get2被调用了')
    return this.first_name + '-' + this.last_name
}

 

使用 chrome 的扩展工具 vue devtool 注意一个问题(小坑): 如果页面上没用使用到计算属性,但是更新了它的依赖数据,在 devtool 中不会刷新。

标签:arr,Vue,set,computed,get,full,属性,name
From: https://www.cnblogs.com/ximu1009/p/17774940.html

相关文章

  • CSS(二) 字体系列属性
    1.CSS常用属性属性名称属性作用值width宽度px/百分数/em等height高度px/百分数/em等background-color背景色red/#fff/rgb(255,255,255).box{width:100px;/*宽度*/height:100px;/*高度*/bac......
  • Vue3.0 中使用 wangEditor 富文本编辑器
    当使用Vue3.0版本时,wangEditor的使用方法略有不同。以下是在Vue3.0中使用wangEditor富文本编辑器的示例代码:```<template> <div>  <divref="editorContainer"></div>  <button@click="saveContent">保存</button> </div></template&......
  • 前端接口请求HTTP设置自定义header属性字段大小写问题
    问题:接口请求头传token值的字段为tokenValue,需要用到token的接口一直不能成功请求。后端排查发现没有接收到token,前端虽然传了token值,但是发现浏览器把tokenValue变成了Tokenvalue,导致后端没正确接收到token值。原因是:HTTPRFC里规定,大小写不敏感。HTTP/1.x大小写不敏感,但现实是......
  • Vue.js框架:vue3版本父子组件之间的传值和事件触发
    一、子组件使用vue3官方提供的setup语法糖中给出的defineEmits、defineProps来定义父子间的传参值和关联方法(useContext在3.2版本之后已去除)。<scriptsetuplang="ts">import{defineProps,defineEmits}from'vue'constemitEvents=defineEmits(['so......
  • Vue源码学习(十三):nextTick()方法
    好家伙,nextTick,(...这玩意,不太常用) 1.什么是nextTick在Vue中,nextTick是一个用于异步执行回调函数的方法。它在Vue更新DOM后被调用,以确保在下一次DOM更新渲染完成后执行回调函数。而事实上,我们把队列处理的操作封装到了nexrTick方法中. 实际上,Vue在更新DOM时是异步执......
  • BUG:net::ERR_CONNECTION_REFUSED(前端Vue2、后端FastAPI)
    BUG场景一个前后端分离的项目,前端使用Vue2框架,后端使用FastAPI,前端想要传输图片给后端,使用的相关接口为:'http://10.96.67.161:8081/uploadImg/'后端FastAPI运行的代码为:if__name__=='__main__':uvicorn.run(app="main:app",host="localhost",port=8081,reload=Tr......
  • [AHK2] 向对象原型添加属性和方法
    ahk和js十分相似,其中一点就是可以向本地对象添加自定义方法和属性。下面的脚本向ahk的字符串,数组添加了许多方法,添加之后在使用上就和js更加相似了。;Thisscriptisusedtoextendthemethodsoftheahknativeobjectprototype#RequiresAutoHotkeyv2.0#SingleInstan......
  • vue
    1.文本:{{data}}注:①.用双大括号{{}}引住的内容被称为"Mustache"语法.2.原始html:<divv-html="data"></div>3.属性:<divv-bind:id="testId"></div>注:①.如chcked值绑定.4.表达式:{{num+1}}{{ok?'1':'0......
  • springboot+vue学习(2)
    1、ref :为子组件指定一个索引ID,给元素或者组件注册引用信息。refs是一个对象,包含所有的ref组件。<divid="parent"><user-profileref="profile"></user-profile>(子组件)</div>varparent=newVue({el:'#parent'})//访问子组件varchild=parent.$ref......
  • springboot+vue学习
    最近遇到一个问题,在一个页面需要动态渲染页面内的表单,其中包括checkbox表单类型,并且使用Element组件UI时,此时v-model绑定的数据也是动态生成的例如:定义的data的form里面是空对象,需要动态生成里面的keyexportdefault{data(){return{form:{}......