vue总结1

本文介绍了Vue异步组件的重要性,如首屏优化,以及解决import返回Promise报错的方法,包括安装babel-plugin-syntax-dynamic-import插件。接着探讨了v-model在原生和自定义组件中的应用,以及各种修饰符的作用,如.lazy、.number和.trim。文章还讲解了如何将原生事件绑定到组件以及.sync修饰符的使用。此外,讨论了组件注册、prop的使用和透传,建议使用this.$attrs和this.$listeners进行透传。最后,提到了动态组件与keep-alive的结合,以及include、exclude和max的配置选项。
摘要由CSDN通过智能技术生成
  • vue异步加载组件

为什么使用?
js解释器是单线程,一次加载所有文件会影响用户体验。异步组件在使用的时候才加载js等文件。首屏优化用。

问题:使用import返回Promise报错unexpected token。

components:{
	'hello-world' : () => import(url)
}

解决方法:
引入插件:npm install --save-dev babel-plugin-syntax-dynamic-import
在.babel文件中plugins中添加该插件

  • v-model

v-model是一种语法糖,既可以支持原生表单元素,也可以支持自定义组件

自定义组件写法:
1.父组件中定义名为value的data,通过 v-model传给子组件
子组件中props接受value,并展示在页面。通过this.$emit(‘input’,newVal)
2.在子组件中定义model,属性prop替换value,event属性替换input

问题:当子组件中不写model,只能传value

思考:啥原理?参考文档

修饰符:
.lazy 响应表单组件chang事件,而不是input。对自定义组件没有作用
.number type为number时获取的value仍是string类型,而加了number修饰符输入数字则获取的是number类型。
.trim

原生事件绑定到组件:
组件hello-world中有一个input。在hello-world中this.$listeners获取到赋值给input的v-on,这样在input的@click等原生事件会直接触发到hello-world上。

修饰符:.sync:this.$emit('update:title', newTitle),可以同步修改父元素的

组件注册:
全局:Vue.component(‘component-a’, { /* … */ }),记住全局注册的行为必须在根 Vue 实例 (通过 new Vue) 创建之前发生
局部:

new Vue({
  el: '#app',
  components: {
    'component-a': ComponentA,
  }
})

prop
静态传过去数字也是string类型。不要直接修改props的值,可以接一下再修改。

透传:
this.$attrs是没有写在props里的其他绑定。 可以通过v-bind="$attrs"传入内部组件
this.$listeners是没有用.native的其他监听。可以通过v-on="$listeners"传入内部组件
也就是说,如果a-b-c三个组件,a需要给c传,可以在b上进行以上两步实现透传。就可以直接在c中接到a传来的props,并且emit出去a的监听。
将要传递的东西写到一个集合里,按需取,省力。

实现透传的其他方式:
vuex(麻烦,不要啥啥都写vuex里)、
vue bus(难定位问题)、
b接收到了传给c(代码里基本用的都是这种方式,b多写很多props并且都要给c传,c再一个一个接)

provide&inject也可以实现祖宗辈的传值,但是inject进来的值watch不到变化,如果需要响应式就不能用

$event:
当有传参进来时需在@method-name="handle('abc',$event)"

插槽:
a组件里用b组件
a里:

<template v-slot:slotName='msgFromB'>
	{{  msgFromB.bmsg + amsg  }}
</template>

b里:

<slot name="slotName" :bmsg="bmsg">

slotName是插槽名称,msgFromB是从子传过来的参数对象,bmsg是从b传过来的具体参数名称。
插槽名称不给,默认是default。

动态组件

<component v-bind:is=""></component>

使用keep-alive可以将组件保存在缓存里,不会调用组件的销毁。会调用activated和deactivated。
include exclude max
is里除了组件还可以写div

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值