首页 > 其他分享 >11-计算属性 vs 监视属性

11-计算属性 vs 监视属性

时间:2023-09-18 15:48:26浏览次数:50  
标签:11 Vue firstname lastname watch vs 监视 属性

计算属性(computed) vs 监视属性(watch)

1) computed 能完成的功能,watch 都可以完成

2) watch 能完成的功能,computed 不一定能完成。例如 watch 可以进行异步操作。

 

两个重要的原则

1) 所有被 Vue 管理的函数,最好写成通函数,这样 this 的指向才是 vm 或 组件实例对象

2) 所有不被 Vue 所管理的函数 (定时器的回调函数、ajax 的回调函数等、Promise 的回调函数),最好写成箭头函数,这样 this 的指向才是 vm 或 组件实例对象

 

分别使用计算属性和监视属性,实现姓名案例

1.使用计算属性实现姓名案例

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>计算属性实现姓名案例</title>
        <!--  引入Vue  -->
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <body>
        <!--  准备好一个容器  -->
        <div id="root">
            姓:<input type="text" v-model:value="firstname" placeholder="请输入您的姓"><br/>
            名:<input type="text" v-model:value="lastname" placeholder="请输入您的名"><br/><br/>

            <!--使用计算属性实现-->
            姓名全称:<span>{{fullName}}</span><br/>
        </div>

        <script type="text/javascript">
            // 阻止 vue 在启动时生成生产提示
            Vue.config.productionTip = false;

             const vm = new Vue({
                el:"#root",
                data(){
                    return{
                        firstname:"任",
                        lastname:"先生"
                    }
                },
                // 计算属性:要用的属性不存在,需要通过已有属性计算得来
                computed:{
                    // 计算属性的简写写法(默认没有set方法)
                    fullName(){
                        console.log("@---正在调用get()方法...")
                        return this.firstname + "-" + this.lastname;
                    }
                }
            })
        </script>
    </body>
</html>

2.使用监视属性实现姓名案例

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>监视属性实现姓名案例</title>
        <!--  引入Vue  -->
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <body>
        <!--  准备好一个容器  -->
        <div id="root">
            姓:<input type="text" v-model:value="firstname" placeholder="请输入您的姓"><br/>
            名:<input type="text" v-model:value="lastname" placeholder="请输入您的名"><br/><br/>

            <!--使用计算属性实现-->
            姓名全称:<span>{{fullname2}}</span><br/>
        </div>

        <script type="text/javascript">
            // 阻止 vue 在启动时生成生产提示
            Vue.config.productionTip = false;

             const vm = new Vue({
                el:"#root",
                data(){
                    return{
                        firstname:"任",
                        lastname:"先生",
                        fullname2:"任-先生"
                    }
                },
                // 监视属性:当被监视的属性发生变化时,handle()回调函数自动调用
                watch:{
                    // 监视属性的简写写法(除了handler之外,没有其他的配置项了)
                    firstname(newValue,oldValue){
                        this.fullname2 = newValue + "-" + this.lastname
                    },
                    lastname(newValue,oldValue){
                        this.fullname2 = this.firstname + "-" + newValue
                    }
                }
            })
        </script>
    </body>
</html>

 

标签:11,Vue,firstname,lastname,watch,vs,监视,属性
From: https://www.cnblogs.com/REN-Murphy/p/17712098.html

相关文章

  • vue3 computed属性
    该随笔是根据b站小满zs的Vue3+vite+Ts+pinia+实战+源码+electron的视频学习写的,Vue3+vite+Ts+pinia+实战+源码+electron......
  • 2023年11月25日PMP报名正式开始!附操作指南
    2023年11月25日PMP®报名时间已经公布,报名时间是根据考试地区而定的。如果您计划参加11月份的PMP®考试,请尽早报名以保证您的考试资格。记得准备好相关材料,将报名账号注册好,以便确保您顺利报考PMP考试。  一、PMP®考试时间:11月25日 二、报名时间:   第一批报名城市:2023年9月1......
  • 解密Spring Boot:JPA vs. MyBatis,哪个更适合你的项目?
    Hello大家好,我是小米!今天我要和大家聊聊一个在Java开发中经常会遇到的问题,那就是如何在SpringBoot项目中区分何时该使用JPA,何时该使用MyBatis。这个问题一直困扰着很多开发者,但其实只要理清一些基本概念和场景,就能轻松解决。废话不多说,让我们一起深入探讨吧!了解JPA和MyBatis首先,让......
  • VSCode快捷键(MAC版本)
    常用添加注释注释一行代码:cmd+/注释一整段代码:option+shift+A格式化代码格式化代码:option+shift+F格式化选中行代码:cmd+Kcmd+F代码缩进:cmd+shift+P查找替换Command+F查找Command+Option+F替换Command+G查找下一个Command+Shift......
  • 从macOS创建Windows 11启动盘
    下载win11官方iso磁盘工具,抹除u盘,格式MS-DOS(FAT32),名称WINDOWS11双击挂载isobrewinstallwimlibrsync-avh--progress--exclude=sources/install.wim/Volumes/CCCOMA_X64FRE_ZH-CN_DV9//Volumes/WINDOWS11wimlib-imagexsplit/Volumes/CCCOMA_X64FRE_ZH-CN_DV9/s......
  • ## day11 - 栈与队列part02
    day11-栈与队列part02力扣20.有效的括号思路:利用栈的特性,遇见左括号就把右括号压栈,遇见右括号,就对比和栈顶元素是否相同,不同就返回false。代码classSolution{public:stack<int>st;boolisValid(strings){if(s.size()%2!=0){......
  • vs打开项目出现“尚未配置为Web项目XXXX指定的本地IIS URL HTTP://localhost:…… .要
    用把工程文件(.vcxproj文件打开找到如下代码片段 ,请将下面片段代码中的(最好用notepad++打开)<UseIIS>True</UseIIS>、<AutoAssignPort>True</AutoAssignPort>节点的值改为False<WebProjectProperties><UseIIS>True</UseIIS><AutoAssignPor......
  • 2023-09-18 taro小程序之onGetPhoneNumber无法获取用户手机号回调?console.log没反应??==
    问题描述:一个微信登录按钮,点击获取用户手机号进而登录;按钮用的是taro框架的button组件,其中用到button的onGetPhoneNumber方法,给这个方法绑定一个事件A,用户点击获取手机号后产生回调进而做下一步的业务;问题就是事件A没有获得任何回调,仿佛onGetPhoneNumber不存在。原因:没有满足使用......
  • Cadence应用笔记:批量修改原理图元器件属性
    OrCad批量修改元器件属性方法软件内修改过滤选择Part、随后Ctrl+A全选,再右键选择修改导出/导入Excel修改点中.DSN文件,随后在工具栏Tool中选择导出......
  • 代码随想录算法训练营day11| ● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复
    20.有效的括号卡哥democlassSolution{public:boolisValid(strings){if(s.size()%2!=0)returnfalse;stack<char>st;for(inti=0;i<s.size();i++){if(s[i]=='(')st.push('......