vue学习积累

1、vue计算属性和方法差异

计算属性实际是响应式的属性(即是属性又是方法),具备缓存能力,依赖不变化就不会重新计算更新

方法是单纯的处理函数,不具备缓存能力

2、vuex、localstorage、sessionstorage 传递数据的差异

3、vue响应式原理

4、vue生命周期

5、公共组件 与 混入,什么场景使用公共组件,什么场景使用混入

如果只是提取公用的数据或者通用的方法,并且这些数据或者方法,不需要组件间进行维护,就可以使用mixins;公共组件最主要的作用还是复用相同的vue组件(有视图,有方法,有状态。vue不建议子组件直接修改props接收到的父组件的数据)。

6、计算属性:

计算属性和data属性都是变量-不能重名. 用法和data相同

函数内依赖的变量发生变化, 会自动重新计算结果返回

计算属性是基于它们的依赖项的值结果进行缓存的,只要依赖的变量不变, 都直接从缓存取结

计算属性也是变量, 如果想要直接赋值, 需要使用完整写法

与methods的使用区别:1、computed适合场景:(1)一个数据属性在它所依赖的属性发生变化时,也要发生变化,这种情况下,我们最好使用计算属性;不希望重复计算,希望使用缓存;(2)在模板中双向绑定一些数据或者表达式({{***}}),但是表达式如果过长,或者逻辑更为复杂时,就会变得臃肿甚至难以维护和阅读,而使用methods较为耗费性能,多次重复使用,多次重复调用,此时使用计算属性

2、methods适用场景: 事件类触发的操作,不涉及重复多次调用,不需要缓存
3、watch适合处理的场景是,侦听一个数的变化,当该数据变化,来处理其他与之相关数据的变化(该数据影响别的多个数据)==当数据发生变化时,执行异步操作或较大开销操作的情况。

7、$refs

为dom元素或子组件添加引用id,生成$refs对象,该对象指向dom元素和子组件实例,可以通过this.$refs操作dom元素或子组件方法和参数

通过$refs可以实现父子组件的通信,父调子--子调父

8、ES6 解构赋值

8.1 解构赋值实现json数据提取

var jsonData = {
    id: 42,
    stats: "ok",
    data: [123,456]
};

let { id, stats, data: num} = jsonData;
console.log(id, stats, num);
//42, "ok", [123,456]

8.1 解构赋值遍历Map结构

var map = new Map();
map.set('first', 'hello');
map.set('second', 'world');

for (let [key, value] of map) {
  console.log(key + "is" + value);
};
//first is hello
//second is world

for (let [key] of map) {
  //只获取key;
}

for (let [,value] of map) {
  //只获取value
}

9、父子组件通信:

9.1 父传子:

(1)子组件中添加props属性 定义需要接受的数据或方法

(2)父级组件引用子组件的标签上,通过v-bind指令将子组件props中被接受参数与将要接受的父组件data或methods进行绑定

9.2 子传父:

(1)在子组件methods中定义传参方法emitData(sendData) //意为发射数据;通过this.$emit('监听事件',data) 将要传递的数据与'监听事件'发送出去

(2)在子组件中调用emitData方法(比如通过click事件触发,进而触发this.$emit发送数据。也可以不通过click触发,直接在方法中发送)

(3)在父级组件 methods中定义接受方法recieveData(recieveData),将recieveData赋值给父组件data中参数。并在引用子组件的标签上通过v-on指令监听recieveData方法,通过v-on:"监听事件"=recieveData,将两者关联起来。

例子可参考:父子组件之间的通信_菜鸟级码农小林的博客-CSDN博客_父子组件通信

9.3 同过refs/$refs 实现子传父(参考第7点)

10、VueX

(1) 包含5个属性,state,getter,mutation,action,module

(2) state:  mapState 辅助函数帮助我们生成计算属性。mapstate函数 返回的是一个对象,通过 ... 对象展开运算符工具函数可以将其内对象传给computed属性。

11、slot 插槽

在父组件中,子组件标签里内套的内容(<childComponent></childComponent>),默认是不显示的。如果要显示需要在子组件中增加<slot></slot>,就相当于子组件标签里的内容,插到了子组件中的<slot></slot>位置。

子组件在对应分发的位置的slot标签里,可以增加name属性,即:<slot name='name名' >内容</slot>,这称为具名slot。父组件在要显示的标签里添加 slot='name名'属性即可实现在特定标签内插入子组件内套内容,比如要在p标签中显示子组件对应的dom,<p slot='name名'></p>

12、箭头函数(ES6)

(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
//相当于:(param1, param2, …, paramN) =>{ return expression; }

// 当只有一个参数时,圆括号是可选的:
(singleParam) => { statements }
singleParam => { statements }

// 没有参数的函数应该写成一对圆括号。
() => { statements }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值