位置: IT常识 - 正文

Vue2进阶笔记(vue2.)

编辑:rootadmin
Vue2进阶笔记 Vue2进阶笔记一、基础知识1.1 computed计算属性1.2 watch监视属性1.3 动态绑定样式1.4 列表循环渲染 key的探讨1.5 列表过滤1.6 数据监视1.7 表单收集1.8 过滤器1.9 生命周期函数1.10 nextTick1.11 动画与过渡1.12 脚手架配置跨域代理二、组件化开发2.1 演替与定义2.2 使用与注册2.3 VueComponent2.4 vue-cli脚手架2.5 main.js中的render2.6 ref属性2.7 props配置2.8 mixin混入2.9 插件2.10 scoped样式三、组件通信3.1 父传子3.2 子传父3.3 全局事件总线3.4 消息订阅与发布(pubsub)3.5 插槽四、Vuex4.1 概念4.2 环境搭建4.3 基本使用4.4 getters的使用4.5 四个map方法4.6 模块化五、vue-router5.1 基本使用5.2 多级路由5.3 路由query参数5.4 路由params传参5.5 路由命名5.6 路由props配置5.7 链接跳转replace属性5.8 编程式路由导航5.9 缓存路由组件5.10 路由组件生命周期函数5.11 路由守卫5.12 hash与history工作模式5.13 meta元数据

推荐整理分享Vue2进阶笔记(vue2.),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue2实践揭秘,vue进阶教程,vue2入门,vue2教程,vue2.0教程,vue2入门,vue进阶教程,vue2入门,内容如对您有帮助,希望把文章链接给更多的朋友!

Vue2进阶笔记,受益于尚硅谷天禹老师课程,在此表示感谢,全文共三万余字。

一、基础知识

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

1.1 computed计算属性

在computed中,可以定义一些属性,即计算属性。计算属性具有缓存功能,相比较methods效率更高。 计算属性本质是方法,只是在使用这些计算属性的时候,把他们的名称直接当作属性来使用,并不会把计算属性当作方法去调用,不需要加小括号()调用。 计算属性的求值结果会被缓存起来,方便下次直接使用(多次调用只要内部数据不改变就不会重新求值,改变了也只会计算一次,虽然有多个地方引用此属性)。getter方法内部无论如何都要return出去一个值。

<body> <div id="app"> <h1>计算属性:computed的getter/setter</h1> <br/> 姓:<input type="text" v-model="firstName"> <br/> 名:<input type="text" v-model="lastName"> <br/> 全名:<input type="text" v-model="fullName">> </div> <script> var app = new Vue({ el:"#app", data:{ firstName:"zhang", lastName:"san", }, computed: { /* 完全写法,可读可修改 fullName:{ get:function(){ return this.firstName + "-" + this.lastName }, set:function(value){ var list = value.split(' '); this.firstName=list[0] this.lastName=list[1] } } */ // 只读不修改,只有getter没有setter,简写 fullName(){ return this.firstName + "-" + this.lastName } }, }); </script> </body>Vue2进阶笔记(vue2.)

注意:计算属性可以传参,但是不能直接传参。

但是在实际开发中我们会更多地使用计算属性,因为计算属性会进行缓存,多次使用时,计算属性只会调用一次。

<p>班级:{{ getClassName(item.faceClass) }}</p>// ...// 正确写法 返回的是一个函数computed: { getClassName() { return function (classId) { const element = this.classList; for (let index = 0; index < element.length; index++) { if (element[index].classId == classId) { return element[index].className; } } }; }, },

如果直接传参则会提示错误:>TypeError: songerName is not a function

// 错误写法computed: { songName(classId) { const element = this.classList; for (let index = 0; index < element.length; index++) { if (element[index].classId == classId) { return element[index].className; } } }}1.2 watch监视属性

Watch概述     一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个属性。 深度监视: (1). Vue中的watch默认不监测对象内部值的改变(一层)。 (2). 配置deep:true可以监测对象内部值改变(多层)。 备注: (1). Vue自身可以监测对象内部值的改变,但Vue提供的watch默认不可以! (2). 使用watch时根据数据的具体结构,决定是否采用深度监视。

简单的监听

<body><div id="app"> <input type="text" v-model="num"></div><script src="vue.js"></script><script> const vm = new Vue({ el: '#app', data: { num: '' }, // 创建vue实例时就知道需要监视那个数据项,用这种方法 watch: { // 不考虑immediate和deep只有hander一个配置项时,可以简写 num(newVal, oldVal) { // 监听 num 属性的数据变化 // 作用 : 只要 num 的值发生变化,这个方法就会被调用 // 第一个参数 : 新值 // 第二个参数 : 旧值,之前的值 console.log('oldVal:',oldVal) console.log('newVal:',newVal) } }, // 正常写法 根据用户行为,方才知道那个数据项需要监视,用这种方法 vm.$watch('num',{ // 每个属性值发生变化就会调用这个函数 handler(newVal, oldVal) { console.log('oldVal:', oldVal) console.log('newVal:', newVal) }, // 立即处理 进入页面就触发 immediate: true, // 深度监听 监视多级结构中所有属性的变化 deep: true } })// 不考虑immediate和deep只有hander一个配置项时,可以简写 vm.$watch('num',function(newVal, oldVal) { console.log('oldVal:', oldVal) console.log('newVal:', newVal) })</script></body>

immediate(立即处理 进入页面就触发) deep(深度监听)     对象和数组都是引用类型,引用类型变量存的是地址,地址没有变,所以不会触发watch。这时我们需要进行深度监听,就需要加上一个属性 deep,值为 true。

<body><div id="app"> <input type="button" value="更改名字" @click="change"></div><script src="vue.js"></script><script> new Vue({ el: '#app', data: { food: { id: 1, name: '冰激凌' } }, methods: { change() { this.food.name = '棒棒糖' } }, watch: { // 完整写法 // 第一种方式:监听整个对象,每个属性值的变化都会执行handler // 注意:属性值发生变化后,handler执行后获取的 newVal 值和 oldVal 值是一样的 food: { // 每个属性值发生变化就会调用这个函数 handler(newVal, oldVal) { console.log('oldVal:', oldVal) console.log('newVal:', newVal) }, // 立即处理 进入页面就触发 immediate: true, // 深度监听 监视多级结构中所有属性的变化 deep: true }, // 第二种方式:监听对象的某个属性,被监听的属性值发生变化就会执行函数 // 函数执行后,获取的 newVal 值和 oldVal 值不一样 'food.name'(newVal, oldVal) { console.log('oldVal:', oldVal) // 冰激凌 console.log('newVal:', newVal) // 棒棒糖 } } })</script></body>

Watch和computed的区别

1、 computed支持缓存,只有依赖数据发生改变,才会重新进行计算;而watch不支持缓存,数据变,直接会触发相应的操作。 2、computed不支持异步,当computed内有异步操作时无效,无法监听数据的变化,而watch支持异步。 3、computed属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中

本文链接地址:https://www.jiuchutong.com/zhishi/297861.html 转载请保留说明!

上一篇:非常好看的html网页个人简历(非常好看的头像)

下一篇:常用的优化器合集(优化器总结)

  • airpods支持联想电脑吗(airpods可以连联想电脑蓝牙吗)

    airpods支持联想电脑吗(airpods可以连联想电脑蓝牙吗)

  • 荣耀x20se不支持语音唤醒吗(荣耀x20se不支持语音唤醒的解决方法)

    荣耀x20se不支持语音唤醒吗(荣耀x20se不支持语音唤醒的解决方法)

  • solidworks的拔模类型有几种(solidworks拨模教程)

    solidworks的拔模类型有几种(solidworks拨模教程)

  • 苹果停留控制怎么用(iphone停留控制是干嘛的)

    苹果停留控制怎么用(iphone停留控制是干嘛的)

  • qq匿名聊天管理员能查出是谁吗(qq匿名聊天管理员和群主能知道是谁吗)

    qq匿名聊天管理员能查出是谁吗(qq匿名聊天管理员和群主能知道是谁吗)

  • 没有拔键器怎么取键帽(没有拔键器怎么取轴)

    没有拔键器怎么取键帽(没有拔键器怎么取轴)

  • ipad已停用连接itunes可以用手机恢复吗(ipad已停用连接itunes怎么快速解决)

    ipad已停用连接itunes可以用手机恢复吗(ipad已停用连接itunes怎么快速解决)

  • 钉钉上课能看到学生吗(钉钉上课能看到老师吗)

    钉钉上课能看到学生吗(钉钉上课能看到老师吗)

  • gt635m显卡相当于什么水平(gt630m显卡性能)

    gt635m显卡相当于什么水平(gt630m显卡性能)

  • 微信把别人删了对方列表里还有吗(微信把别人删了对方还能看到聊天记录吗)

    微信把别人删了对方列表里还有吗(微信把别人删了对方还能看到聊天记录吗)

  • qq在线文件和离线文件的区别(qq文件在线发送和离线发送)

    qq在线文件和离线文件的区别(qq文件在线发送和离线发送)

  • xsmax屏幕不灵敏(xsmax为什么屏幕不灵敏)

    xsmax屏幕不灵敏(xsmax为什么屏幕不灵敏)

  • 朋友圈权限仅聊天是什么意思 (朋友圈权限仅聊天能看到共同好友)

    朋友圈权限仅聊天是什么意思 (朋友圈权限仅聊天能看到共同好友)

  • 天冷苹果手机为啥关机(苹果手机天冷为什么耗电快)

    天冷苹果手机为啥关机(苹果手机天冷为什么耗电快)

  • 970am中文什么意思(970 am是什么意思)

    970am中文什么意思(970 am是什么意思)

  • ipv6常见地址是什么(ipv6地址包括)

    ipv6常见地址是什么(ipv6地址包括)

  • word2010怎么添加字符底纹(word2010怎么添加图片水印)

    word2010怎么添加字符底纹(word2010怎么添加图片水印)

  • 华为mate30pro支持5g么(华为mate30pro支持广电网络吗)

    华为mate30pro支持5g么(华为mate30pro支持广电网络吗)

  • 选取多个文件的快捷键(选取多个文件的命令)

    选取多个文件的快捷键(选取多个文件的命令)

  • 如何在头像上加上国旗(怎么在头像加字)

    如何在头像上加上国旗(怎么在头像加字)

  • 怎么设置流程图自动伸缩(怎么设置流程图间距)

    怎么设置流程图自动伸缩(怎么设置流程图间距)

  • 手机抖屏怎么回事(手机抖屏影响使用吗)

    手机抖屏怎么回事(手机抖屏影响使用吗)

  • 快手封了审核中要多久(快手封号申请后,审核中需要多久才得结果)

    快手封了审核中要多久(快手封号申请后,审核中需要多久才得结果)

  • 拼多多砍价怎么面对面砍(拼多多砍价怎么没有了)

    拼多多砍价怎么面对面砍(拼多多砍价怎么没有了)

  • 小米app检测不到路由器(小米app检测不到网络)

    小米app检测不到路由器(小米app检测不到网络)

  • 复现开源论文代码总结

    复现开源论文代码总结

  • Windows OpenGL 图像曝光度调节(opengl开发图形界面)

    Windows OpenGL 图像曝光度调节(opengl开发图形界面)

  • 收到扶贫款怎么做会计分录
  • 报完税没有清卡
  • 季度所得税申报错误,一定要更改吗
  • 开业前的其他费用
  • 无形资产报废会计科目
  • 之前付过款回来收到发票应该怎么做凭证
  • 个人转让不动产给个人独资企业
  • 企业所得税扣除项目及标准
  • 个体工商户开具增值税专用发票
  • 新办建筑劳务公司有资质证书吗
  • 应收账款预付账款属于什么科目
  • 小微企业按季度预缴企业所得税
  • 民办幼儿园需要给老师交五险一金吗
  • 小微企业销售额含税吗
  • 会议案例分析题及答案
  • 公司的招标代理费计入什么科目
  • 成本无发票如何处理
  • 现金日记账本月合计图
  • 期初存货余额在哪张表里
  • 费用化和资本化对利润的影响
  • 定额发票上除了发票章还有其他章吗
  • 计划分配率怎么算
  • 转让费入什么会计分录
  • 公司免税是指免的什么税
  • mis.off c n
  • php curlfile
  • 小规模纳税人销售货物税率是多少
  • windows7增加桌面
  • 减免税款怎么做账务处理
  • 微信小程序分包加载
  • php内置数组
  • 融资租赁售后回租账务处理
  • php curl file_get_contents
  • 借银行卡给别人过账有什么风险
  • thinkphp框架怎么用
  • php use关键字
  • antv g6 node 嵌套
  • vue3路由守卫 微信授权登陆
  • 发票必须在什么时候开
  • 先收到保险公司赔付然后赔给顾客医药费怎么做帐
  • 辞退补偿金计算
  • 自产自销农产品增值税免税政策
  • 公司代买社保怎么收费
  • PHPCMS 是 ThinkPHP 开发的吗?
  • Python解释器有哪些种类
  • 质量扣款应收账款怎么算
  • 销售农产品是否交消费税
  • 个体工商户要开票吗
  • 外商投资企业 外资企业
  • c#调用excel
  • 成本费用率分析说明
  • 或有资产的确认条件基本确定
  • 小规模纳税人购入货物收到增值税专用发票
  • 受托代销的含义
  • 每个月结转损益会计分录
  • 税控盘超过15号还可以抄报吗
  • 分支机构需要单独设立账簿吗
  • 商品型企业
  • 简述工作底稿的一般要求及内容
  • win8怎么打开光驱
  • qq windows
  • win10新预览版
  • win10如何添加输入法
  • xp系统怎么删除系统
  • mac截屏后的图片在哪里
  • linux配置光纤
  • outpost.exe - outpost是什么进程 有什么用
  • win7点关机关不了
  • 为了保证系统安全,必须为用户和角色设置密码
  • cocos2dx4.0教程
  • 简述JavaScript中全局变量与局部变量的作用域
  • unity3d官方教程
  • unity的vs
  • div与script
  • android怎么运行
  • jquery form validate
  • 黑龙江国税局官网
  • 土地整治税率是多少
  • 医保账户被扣财富怎么办
  • 中医药文化进校园活动
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设