首页 > 其他分享 >vue高级进阶( 一 ) 组件精髓概述

vue高级进阶( 一 ) 组件精髓概述

时间:2023-02-07 21:24:08浏览次数:37  
标签:slot vue 进阶 插槽 text props 组件

前言

这个系列可能会分为几部分:

  1. 基础以及高级用法总结
  2. 一些比较有代表性的实战
  3. 源码解析(一定是用最粗俗,不对,是最通俗的语言讲解,这个我可以保证)

总之一定对得起高级进阶这几个字。。。

组件分类

vue组件主要包含:

  1. 由vue-router产生的页面,可以称之为路由组件
  2. 独立基础组件:例如Date和input这之类的可以全局复用的基础组件
  3. 业务组件,除了以上两种就是业务组件

组件精髓

props

  • tppe 类型
  • default 默认
    • 如果是对象,数组,必须要写成方法进行返回
msg:{
    type: Array,
    default: ()=>([])
}
  • validator 校验,有一个参数value
  • inheritAttrs 是否继承html特性
  • 子组件不能修改父组件传递过来的prop

event

方法一

<parent-com @on-click="handleClick"></parent-com>

子组件
<button>点击</button>
在子组件中触发
this.$emit('on-click', event)

方法二

加上.native就是原生方法
<parent-com @click.native="handleClick"></parent-com>

子组件
<button>点击</button>

slot

<slot> 节点就是指定的一个插槽的位置,v-slot:[name]可以指定插槽的位置,有了name就叫具名插槽

具名slot

元素可以用一个特殊的属性 name 来配置如何分发内容。多个 slot 可以有不同的名字。具名 slot 将匹配内容片段中有对应 slot 特性的元素 父组件

    <slotshow>
        <p>{{msg}}</p>
        <h6 slot="xxx">就是没有废话!</h6>

        vue2.6以上的版本是这样的
        <h6 v-slot:xxx>就是没有废话!</h6>
    </slotshow>
 

子组件

    <div class="slotcontent">
        <slot></slot>
        <slot name="xxx"></slot>
    </div>
 

作用域插槽

作用域插槽是一种特殊类型的插槽,用作使用一个 (能够传递数据到) 可重用模板替换已渲染元素。 在子组件中,只需将数据传递到插槽,就像将 props 传递给组件一样,插槽的内容就可以使用这个传递过来的数据在父级中,具有特殊属性 scope 的 <template> 元素必须存在,表示它是作用域插槽的模板。scope 的值对应一个临时变量名,此变量接收从子组件中传递的 props 对象.

列表组件

var childNode = {
 template: `
     <ul>
     // 通过:text="item.text"进行传值
     <slot name="item" v-for="item in items" :text="item.text">默认值</slot>
     </ul>
 `,
 data(){
     return{
          items:[
              {id:1,text:'第1段'},
              {id:2,text:'第2段'},
              {id:3,text:'第3段'},
          ]
        }
    }
};

var parentNode = {
 template: `
 <div class="parent">
    <p>父组件</p>
     <child>
            // 通过props进行接收
          <template slot="item" scope="props">
          <li>{{ props.text }}</li>
          </template>
     </child>
 </div>
 `,
 components: {
    'child': childNode
 },
};
 

组件通信(第二篇会详细讲解8种用法)

  1. ref:给元素或组件注册引用信息;
  2. $parent / $children:访问父 / 子实例。
  3. props 父向子传递
  4. $emit和$on,子----->父
  5. vuex

一些碎知识

  1. 改变数组某一项的方法:

    1. 直接改变对象的引用
    2. 可以使用push,shift等方法
    3. 可以使用vue的变异方法
    Vue.set(vm.userinfo,2,{a:1})  == vm.$set(vm.userinfo,2,{a:1})
     
    
  2. is属性

    <table>
        <tr id="row"></tr>  注意is的使用 table中只能使用tr
    </table>
     
    
  3. 在子组件中的data必须是一个function,来return 一个对象,这是为了保证每一个实例的data属性都是独立的,不会相互影响

 

 

标签:slot,vue,进阶,插槽,text,props,组件
From: https://www.cnblogs.com/jiangweichen88/p/17099827.html

相关文章

  • vue高级进阶( 二 ) 8种组件通信详解
     vue高级进阶(二)8种组件通信详解猛兽总是独行,牛羊才成群结队。-------鲁迅vue组件通信的重要性无需多言。。。但是你肯定没有全部掌握,所以这第二篇文章应运而......
  • vue高级进阶( 三 ) 组件高级用法及最佳实践
     vue高级进阶(三)组件高级用法及最佳实践世界上有太多孤独的人害怕先踏出第一步。---绿皮书书接上回,上篇介绍了vue组件通信比较有代表性的几种方法,本篇主要讲......
  • 认证组件、权限组件、频率组件、过滤排序、分页
    认证组件、权限组件、频率组件、过滤排序、分页认证组件1.认证组件###视图fromrest_framework.genericsimportListAPIView,RetrieveAPIViewfromrest_framework.m......
  • python之路65 drf从入门到成神 5 认证组件、权限组件、频率组件、过滤排序、分页
    认证组件以后,有的接口需要登录后才能访问,有的接口,不登录就能访问写一个登录接口,返回token,以后只要带着token过来,就是登录了不带就没有登录需求:查询所有不需要登录......
  • vue3 | readonly、shallowReadonly
    readonly接受一个对象(不管是响应式还是普通的)或者是一个ref,返回的是一个原值的只读代理。<template><n-elclass="h-400w-fullflexflex-coljustify-centeritems......
  • vue3 | isRef、unref、toRef、toRefs
    isRef检查某个值是否是ref。是返回true,否则返回false。constnum=ref(10);constnum1=20;constnum2=reactive({data:30});console.log(isRef(num));//tru......
  • vue3 | slots
    一、什么是插槽插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot> 表示,父组件可以在这个占位符中填充任何模板代码,如HTML、组件等,填充的内容会替换子组......
  • vue3 | shallowReactive 、shallowRef、triggerRef
    shallowReactive使用reactive声明的变量为递归监听,使用shallowReactive声明的变量为非递归监听(通俗的讲就是reactive创建的对象将会被vue内部进行递归监听,可以监......
  • drf-day7——认证组件、权限组件、频率组件、过滤排序、分页
    目录一、认证组件1.1登录接口1.2认证组件使用步骤1.3整体代码二、权限组件2.1需求分析:2.2权限的使用2.3代码三、频率组件3.1使用步骤3.2代码四、过滤排序4.0继承API......
  • 在vue项目中使用nprogess插件
    nprogress插件是在页面刷新和跳转时出现在浏览器顶部的进度条,它会随着页面的加载而显示进度状态。可在官网查看相关效果。在vue项目中使用nprogress插件1.安装:npmin......