针对Vue文档中部分大家可能不会去研读的内容,我做了个小总结,作为有经验者的快餐,不是特别适合初学者,可能有不妥之处,希望大家多提建议。
节省代码量的mixin
mixin概念:组件级可复用逻辑,包括数据变量/生命周期钩子/公共方法,从而在混入的组件中可以直接使用,不用重复写冗余逻辑(类似继承)
使用方法:
在某一公共文件夹pub下创建mixin文件夹,其下创建mixinTest.js
const mixinTest = { created() { console.log(`components ${this.name} created`) }, methods: { hello() { console.log('mixin method hello') } }}export default mixinTest
在组件中引用刚才的公共混入文件并使用
import mixinTest from '../pub/mixin/mixinTest.js'export default { data() { return { name: 'hello' } }, mixins: [mixinTest], methods: { useMixin() { this.hello() } }}
ps: 若是使用Vue.mixin()这个方法,则会影响之后创建的所有Vue示例,慎用!
注意mixin的几个特性:
slot内容分发
slot概念引入:Vue跟React在写法上的不同就在于组件与子组件内部元素的组织上,在组件里面没有children元素供我们访问和展现(暂不考虑render函数),取而代之的API是slot
使用场景定义:
<template> <div id="app"> <self-component> <!--self-component表示自定义的组件--> <span>12345</span> <!--父组件里的嵌套标签--> </self-component> </div> </template><script>export default { components: [selfComponent]}</script><!--self-component的组件模板--><template> <div> <button><slot></slot></button> </div></template><script>export default { // 只有子组件的模板里面有slot标签,才能取到写在自定义组件里面的标签的渲染引用}</script>
新闻热点
疑难解答
图片精选