vue的笔记(2)

简介: vue的笔记

vue的笔记(1)https://developer.aliyun.com/article/1530392

1.8 计算属性

1.定义:要用的属性不存在,要通过已有属性计算得来。

2.原理:底层借助了objcet.defineproperty方法提供的getter和setter.

3.get函数什么时候执行?

(1).初次读取时会执行一次。

(2).当依赖的数据发生改变时会被再次调用。

4.优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便。5.备注:

1.计算属性最终会出现在vm上,直接读取使用即可。

2.如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时依赖的数据发生变化

简写

1.9监视属性

const vm = new Vue({el: " #root',
data:{
isHot:true,},
computed:{ …methods: {…watch:{
isHot:{
immediate:true, //c初始化时让handler调用一下
// handler什么时候调用?当isHot发生改变时。
handler(newValue,oldValue){
console.1og('isHot被修改了" ,newValue,oldvalue}
}
}
}
)
vm.$watch( 'isHot",{
immediate:true,//初始化时让handler调用一下l/ handler什么时候调用?当isHot发生改变时。handler(newValue,oldvalue){
console.log( 'isHot被修改了',newValue,oldValue)}
})

1.9.2深度监视

深度监视:

(1).Vue中的watch默认不监测对象内部值的改变(一层)。

(2).配置deep:true可以监测对象内部值改变(多层)。备注:

(1).Vue自身可以监测对象内部值的改变,但Vue提供的watch默认不可以!

(2).使用watch时根据数据的具体结构,决定是否采用深度监视

简写

1.10 watch对比computed

computed和lwatch之间的区别:

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

2.watch能完成的功能,computed不一定能完成,例如: watch可以进行异步操作。两个重要的小原则:

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

箭头函数this等于父级函数this指向,下面的定时器必须用箭头函数,不能用普通函数。

如果定时器中的回调函数使用的是箭头函数,则会往上一级函数中去寻找this

setTimeout的系统调用的所以里面的this是windows

1.11绑定样式

绑定class样式

:class后面的式子当做表达式使用

<div id="root">
<div class="basic" :class="happy" @click="changeMood">{{name}}</div>
</div>
</body>
<!--准备好一个容器--><div id="root">
<!--绑定class样式--字符串写法,适用于:样式的类名不确定,需要动态指定-->
<div class="basic" :class="mood" @click="changeMood">{{name}}</div><br/><br/>
<!--绑定class样式--数组写法,适用于:要绑定的样式个数不确定、名字也不确定-->
<div class="basic" :class="classArr">{{name}}</div> <br/><br/>
<!--绑定class样式--对象写法,适用于:要绑定的样式个数确定、名字也确定,但要动态决定用不用-->
<div class="basic" :class="class0bj">{{name}}</div>
</div>

绑定style样式

1.12条件渲染

v-show

条件为false隐藏

v-if

条件为false直接就没有

v-else-if

v-else

连在一起使用不能被打断

template 不影响结构

1.13列表渲染

遍历数组

<div id="root"><h2>人员列表</h2><ul>
<li v-for="p in persons" :key="p.id">{ip.name}}-{{p.age}}
</li>
</ul></div>
data:{
persons:[
{id: '001" ,name:"张三",age:18},
 {id: "002 " ,name:"李四",age: 19},
 {id: "003" ,name:'王五',age:20}]
}

每个列表项都会自动分配相应顺序的index代表遍历时的索引值

<div id="root">
<h2>人员列表</h2>
<ul>
<li v-for="(p,index) in persons" :key="index">{{p.name}}-{{p.age}}
</li>
</ul></div>

遍历对象

data里面的一个car对象

car:{
name:'奥迪A8',
price: '70万',
color:'黑色'
}
<ul>
<li v-for=" (value,k) of car" :key="k">
{{k}}-{{value}}
</li>
</ul>

遍历字符串

str : ' hello'

<ul>
<li v-for="(char,index) of str":key="index>
 {{a}}-{{b}}
</li>
</u1>

遍历指定次数

1.14key的作用与原理

1。虚拟DOM中key的作用:

key是虚拟DOM对象的标识,当数据发生变化时,Vue会根据【新数据】生成【新的虚拟DoN》,随后Vue进行【新虚拟DOM】与【旧虚拟DOM】的差异比较,比较规则如下:

2.对比规则:

(1).旧虚拟DOM中找到了与新虚拟DOM相同的key:

o.若虚拟DOM中内容没变,直接使用之前的真实DOM !

@.若虚拟DOM中内容变了,则生成新的真实DOM,随后替换掉页面中之前的真实DOM.

(2).旧虚拟DOM中未找到与新虚拟DOM相同的key

创建新的真实DOM,随后渲染到到页面。

3,用index作为key可能会引发的问题:

1。若对数据进行:逆序添加、逆序删除等破坏顺序操作:

会产生没有必要的真实DOM更新==>界面效果没问题,但效率低。

2.如果结构中还包含输入类的DOM:

会产生错误DOM更新==〉界面有问题。

4。开发中如何选择key? :

1.最好使用每条数据的唯一标识作为key,比如id、手机号、身份证号、学号等唯一值。2.如果不存在对数据的逆序添加、逆序删除等破坏顺序操作,仅用于渲染列表用于展示,

使用index作为key是没有问题的。

1.14 列表渲染

用watch实现

new Vue({
el : " #root',
data:{
keyword: ' ',
persons:[
{id: "001 " ,name:'马冬梅',age: 19,sex :'女'},
{id: '062 " ,name:"周冬雨",age: 20,sex :'女'},
 {id: '003" ,name:"周杰伦',age:21,sex:"男"},
 {id: "004" ,name:温兆伦',age:22,sex:"男}],
filPerons:[]
    },
watch:{keyword:{
immediate:true,
handler(val){
this.filPerons = this.persons.filter((p)=>{
return p.name.indexOf(val) l== -1
})
}}}})

计算属性实现

相关文章
|
3天前
|
JavaScript
Vue中如何设置在执行删除等危险操作时给用户提示(二次确认后执行对应的操作)
这篇文章介绍了在Vue项目中如何实现执行删除等危险操作时的二次确认机制,使用Element UI的`el-popconfirm`组件来弹出确认框,确保用户在二次确认后才会执行删除操作。
Vue中如何设置在执行删除等危险操作时给用户提示(二次确认后执行对应的操作)
|
3天前
|
JavaScript
如何创建一个Vue项目(手把手教你)
这篇文章是一篇手把手教读者如何创建Vue项目的教程,包括使用管理员身份打开命令行窗口、找到存放项目的位置、通过vue-cli初始化项目、填写项目信息、进入项目目录、启动项目等步骤,并提供了一些常见第三方库的引入方法。
如何创建一个Vue项目(手把手教你)
|
3天前
|
前端开发
StringBoot+Vue实现游客或用户未登录系统前、可以浏览商品等信息、但是不能购买商品或者加入购物车等操作。登录系统显示用户的登录名(源码+讲解)
这篇文章介绍了使用StringBoot+Vue实现用户登录状态判断的方法,包括前端加载用户信息和后端设置session的源码示例。
|
3天前
|
JavaScript
在Vue中使用Avue、配置过程以及实际应用
这篇文章介绍了作者在Vue项目中集成Avue组件库的完整过程,包括安装、配置和实际应用,展示了如何利用Avue实现动态表单和数据展示的功能。
在Vue中使用Avue、配置过程以及实际应用
|
3天前
|
JavaScript
如何在Vue页面中引入img下的图片作为背景图。../的使用
这篇文章介绍了在Vue页面中如何引入`img`目录下的图片作为背景图,提供了两种使用相对路径的方法。第一种是使用`../assets/img/`作为路径引入图片,第二种是使用`../../assets/img/`作为路径。文章还展示了使用这些方法的代码实现和效果展示,并鼓励读者学无止境。
如何在Vue页面中引入img下的图片作为背景图。../的使用
|
3天前
|
JavaScript
如何通过点击商品的信息(图片或者文字)跳转到更加详细的商品信息介绍(前后端分离之Vue实现)
该博客文章介绍了如何在Vue 2框架下实现前后端分离的商品信息展示和详情页跳转,包括排序筛选、详情展示、加入购物车和分享功能。
如何通过点击商品的信息(图片或者文字)跳转到更加详细的商品信息介绍(前后端分离之Vue实现)
|
3天前
|
JavaScript
在Vue中使用Swiper轮播图、同时解决点击轮播图左右切换按钮不生效的问题、同时将轮播图抽离出为一个公共组件
这篇文章介绍了在Vue中如何使用Swiper插件创建轮播图,解决Swiper左右切换按钮不生效的问题,并展示了如何将Swiper轮播图抽离成一个可复用的公共组件,同时提供了详细的安装、配置和优化建议。
在Vue中使用Swiper轮播图、同时解决点击轮播图左右切换按钮不生效的问题、同时将轮播图抽离出为一个公共组件
|
3天前
|
JavaScript
如何查看Vue使用的版本
这篇文章介绍了如何在项目中查看Vue及其相关库的版本信息,比如element-ui和element-china-area-data。要查看Vue的版本,需要查看项目中的`package.json`文件,在`dependencies`部分可以找到Vue的版本号。如果需要查询不同版本的兼容性,可以访问相应的官方文档或资源网站。
|
3天前
|
存储 JavaScript 前端开发
Vue中如何通过三元运算符来展示不同的操作
这篇文章讲述了在Vue中如何使用三元运算符结合v-if指令来根据订单的不同状态展示不同的操作按钮,例如在待发货状态显示退款按钮,在待付款或完成状态显示删除按钮。
|
3天前
|
JavaScript 开发者
在Vue中引入Message,弹窗提示错误信息
这篇文章讲述了在Vue CLI项目中如何处理异常,通过引入Message组件实现弹窗提示错误信息,帮助开发者排查和解决webpack等问题。