IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue-组件 -> 正文阅读

[JavaScript知识库]Vue-组件

Vue-组件

  • 组件之间的父子关系

  • 使用组件的三个步骤
    在这里插入图片描述

  • 私有组件

    • 通过components 注册的是私有子组件。
  • 全局组件

    • 在vue 项目的main.js 入口文件中,通过Vue.component() 方法,可以注册全局组件。

      import Vue from 'vue'
      import App from './App.vue'
      
      // 导入需要被全局注册的那个组件
      import Count from '@/components/Count.vue'
      Vue.component('MyCount', Count)
      
      Vue.config.productionTip = false
      
      new Vue({
        // render 函数中,渲染的是哪个 .vue 组件,那么这个组件就叫做 “根组件”
        render: h => h(App)
      }).$mount('#app')
      
  • 自定义属性props

    • props 是组件的自定义属性,在封装通用组件的时候,合理地使用props 可以极大的提高组件的复用性!

      export default{
      	//组件的自定义属性
      	props:['自定义属性A','自定义属性B','其他自定义属性...'],
      	//组件的私有数据
      	data(){
      		return {
      
      		}
      	}
      }
      
    • props是只读的:vue 规定组件中封装的自定义属性是只读的,程序员不能直接修改props 的值,否则会直接报错。要想修改props 的值,可以把props 的值转存到data 中,因为data 中的数据都是可读可写的!

      props:['init'],
      data(){
      	return {
      		count:this.init,//把this.init的值转存到count
      	}
      }
      
    • props可以写成对象形式,方便定义属性默认值(default)类型(type)是否必填(required) 等。

      export default{
      	props:{
      		init:{
      			//用default属性定义属性的默认值
      			default:0,
      			//用type属性定义属性的值类型,如果传值不符合此类型,则会在终端报错
      			type:Number,
      			//必填项校验
      			required:true,
      		}
      	}
      }
      
  • 组件之间样式冲突问题

    • 默认情况下,写在.vue 组件中的样式会全局生效,因此很容易造成多个组件之间的样式冲突问题。

      导致组件之间样式冲突的根本原因是:(1) 单页面应用程序中,所有组件的DOM 结构,都是基于唯一的index.html 页面进行呈现的,(2) 每个组件中的样式,都会影响整个index.html 页面中的DOM 元素.

    • 解决组件之间样式冲突的问题:为每个组件分配唯一的自定义属性,在编写组件样式时,通过属性选择器来控制样式的作用域。

      <template>
      	<div class="container" data-v-001>
              <h3 data-v-001>轮播图插件</h3>
          </div>
      </template>
      <style>
      	/*通过中括号"属性选择器",来防止组件之间的"样式冲突的问题",
            因为每个组件分配的自定义属性是"唯一的"*/
          .container[data-v-001]{
              border: 1px solid red;
          }
      </style>
      

      为了提高开发效率和开发体验,vue 为style 节点提供了scoped属性,从而防止组件之间的样式冲突问题。

      <template>
      	<div class="container">
              <h3>轮播图插件</h3>
          </div>
      </template>
      <style scoped>
      	/*style节点scoped属性,用来自动为每个组件分配唯一的"自定义属性",
            并自动为当前组件的DOM标签和style样式应用这个自定义属性,防止组件的样式冲突问       题。*/
          .container{
              border: 1px solid red;
          }
      </style>
      
  • /deep/样式穿透:如果给当前组件的style 节点添加了scoped 属性,则当前组件的样式对其子组件是不生效的。如果想让某些样 式对子组件生效,可以使用/deep/ 深度选择器,但是也有特殊情况:特殊情况传送门

    <style lang="less" scoped>
        .title{
            color:blue;/*不加/deep/时,生成的选择器格式为:.title[data-v-052242de]*/
        }
        /deep/ .title{
            color:blue;/*加上/deep/时,生成的选择器格式为:[data-v-052242de] .title*/
        }
    </style>
    
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:13:49  更:2022-07-17 16:14:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:45:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码