深入了解Vue.js组件笔记

深入了解Vue.js组件笔记

1、组件注册

Vue.component('name',{}) 创建的组件都是全局组件,它们在注册之后可以用在任何新创建的Vue根实例(new Vue)的模板中。第一个参数是组件的名字,第二个参数是一个方法,可以在其中定义组件的data数据、template模板、props传值、components组件注册、computed计算属性、method方法、watch监听数据变化、以及生命周期的构子函数:beforeCreate、created、beforeMount、mounted、beforeupdate、updated、beforeDestroy、destroyed。
推荐创建一个 components 目录,并将每个组件放置在其各自的文件中:
import ComponentA from './ComponentA'
import ComponentC from './ComponentC'
export default {
  components: {
    ComponentA,
    ComponentC
  }
}

2、Prop

  • 由于浏览器会把所有大写字符解释为小写字符。这意味着当你使用 DOM 中的模板时,camelCase (驼峰命名法) 的 prop名需要使用其等价的 kebab-case (短横线分隔命名) 命名。prop可以是任何类型的数据、变量或对象,当prop是对象时,即使对象是静态的也必须使用v-bind。不要在子组件中改变prop的数据,可以在自身的data里保存一份该prop属性

       Vue.component('user', {
         props: ['sayHello']
       })
       <user say-Hello="hello!"></user>
    我们可以传递静态Prop(如上),也可以使用v-bind传递动态Prop(如下)
    <user :title="post.title"></user>
    
  • prop验证(控制传入组件数据的类型)
    Vue.component(‘mycomponent’,{

       props:{
           propZ:null,    //匹配任何类型
           propA:Number,    //数字类型
           propB:[Number,String],    //多个可能的类型
           propC:{
               type:String,
               required:true,    //必填
               default:'Hello'    //默认
           },
           propD:{
               type:Object,    //对象类型
               default:function(){    //默认函数
                   return {
                       msg:'hello'
                   }
               }
           },
           propE:{
               //自定义验证
               validator: function (value) {
                   // 这个值必须匹配下列字符串中的一个
                   return ['success', 'warning', 'danger'].indexOf(value) !== -1
               }
           },
           user:Person
       }

    })

3、自定义事件

1、事件名建议始终使用短横线连接的方式如:my-event
2、自定义组件的 v-model:
    Vue.component('base-checkbox', {
      model: {
        prop: 'checked',
        event: 'change'
      },
      props: {
        checked: Boolean
      },
      template: `
        <input
          type="checkbox"
          v-bind:checked="checked"
          v-on:change="$emit('change', $event.target.checked)"
        >
      `
    })
    <base-checkbox v-model="lovingVue"></base-checkbox>

4、插槽<slot>

1、组件:<base-layout>:
    <div class="container">
        <header>
            <slot name="header"></slot>
        </header>
        <main>
            <slot></slot>
        </main>
        <footer>
            <slot name='footer'></slot>
        </footer>
        <slot name="footer"></slot>
    </div>
    
    <base-layout>
        <template slot='header'>
            <h3>我是Header</h3>
        </template>
        <p>我没有名字</p>
        <p>显示在默认插槽</p>
        <h3 slot='footer'>具名插槽2</h3>
    </base-layout>
    结果:
    <div class="container">
        <header>
            <h3>我是Header</h3>
        </header>
        <main>
            <p>我没有名字</p>
            <p>显示在默认插槽</p>
        </main>
        <footer>
            <h3>具名插槽2</h3>
        </footer>
    </div>

5、动态组件与异步组件

<!-- 失活的组件将会被缓存!-->
<keep-alive>    //<keep-alive>缓存组件切换状态,组件必须有名字
  <component v-bind:is="currentTabComponent"></component>    //is 特性来切换不同的组件
</keep-alive>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101434.html原文链接:https://javaforall.net

(0)
上一篇 2021年6月12日 下午5:00
下一篇 2021年6月12日 下午6:00


相关推荐

  • EasyOCR,识别图片中的文字真的so easy

    EasyOCR,识别图片中的文字真的so easy原文链接 http www juzicode com image ocr python easyocr 桔子菌之前在 pytesseract 提取识别图片中的文字中介绍过怎么在 Python 中使用 tesseract 提取和识别图片中的文字 今天再来聊一聊 EasyOcr 它也是一款非常优秀的 OCR 包 使用起来是相当地 easy 1 安装 easyocr 包这里以 windows 系统为例 需要先安装 pytorch 在 pytorch 官网可以根据语言版本 操作系统等信息找到安装方法 pip3insta

    2026年3月18日
    2
  • 小明の魔法计划——最长上升子序列[通俗易懂]

    小明の魔法计划——最长上升子序列[通俗易懂]Think:1知识点:最长上升子序列2反思:知识体系需要加深拓展SDUT题目链接小明の魔法计划TimeLimit:1000MSMemoryLimit:65536KBProblemDescription在一个遥远的数学魔法国度,小明在学习一个魔法,这个魔法需要一些施法材料,所幸的是施法材料已经准备好了,下一步就是建立魔法阵了,每一个施法材料都有一个特性值,表示为一个大于1小

    2022年6月4日
    37
  • L2正则化的作用(l1正则化特点)

    0正则化的作用正则化的主要作用是防止过拟合,对模型添加正则化项可以限制模型的复杂度,使得模型在复杂度和性能达到平衡。常用的正则化方法有L1正则化和L2正则化。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归。但是使用正则化来防止过拟合的原理是什么?L1和L…

    2022年4月11日
    91
  • vue集成百度UEditor富文本编辑器

    vue集成百度UEditor富文本编辑器

    2021年10月11日
    66
  • gamma correction什么意思_伽马校正计算方法

    gamma correction什么意思_伽马校正计算方法伽马是数字成像系统的一个重要特征,它定义了像素值与其实际亮度之间的关系。在标准显示器上面,如果没有伽马,数码相机拍摄到的阴影内容便会跟我们实际看到的有所差异。平时我们所说的伽马校正、伽马编码、伽马压缩,都是伽马曲线的各种应用场景,属于相似的概念。对于伽马工作原理的理解,一方面可以提高摄影者的曝光技术,另一方面可以帮助人们更好地利用后期的图像编辑功能。

    2026年3月4日
    3
  • python实现矩阵转置的几种方法

    python实现矩阵转置的几种方法文章目录(1)方法一、使用numpy转置(2)方法二、使用zip()函数(3)方法三、使用python列表表达式【不占用额外空间,“原地修改”】(4)方法四、新建列表B,使用双重循环添加元素(1)方法一、使用numpy转置importnumpyasnpA=np.mat([[1,2,3],[4,5,6],[7,8,9]])print(A.T)print(A.swapaxes(0,1))#均输出#[[147]#[258]#[369]]importnum

    2022年6月2日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号