vue导入私有组件和注册全局组件和props自定义属性

news2024/11/17 21:41:47

目录

  • 先下载并配置插件
  • 导入私有组件
  • 注册全局组件
    • props自定义属性使用

先下载并配置插件

导入的时候需要路径,有个@符号,但不能提示路径,需要手打路径,会发现很麻烦,这时候可以通过vscode插件来解决
vscode搜索Path Autocomplete
配置插件,点击插件设置—扩展设置,点开任意一个setting.json中编辑,打开后拉到最上面,将下面配置复制上去即可

 //导入文件时是否携带文件的扩展名
    "path-autocomplete.extensionOnImport": true,
    // 配置@路径提示
    "path-autocomplete.pathMappings": {
        "@": "${folder}/src"
    },

在这里插入图片描述
配置完就可以使用@符号提示路径了

导入私有组件

例如如下目录
在这里插入图片描述
我想把left和right组件导入到App组件中,那么
只需要三个步骤(这里以导入left为例)

  • 在App.vue的script模块导入组件(import left from ‘@/components/Left.vue’)
  • 在export defult里面method平级地方创建
    components: {
    ‘left’: left, //这个是注册left组件,可简写成left
    ‘right’: right //这个是注册right组件,可简写成right
    }
  • 在template节点的根组件下引入组件,直接用上面的注册名作为双标签展示组件
    完整代码
<template>
  <!-- 模板文件一定要包含一个根元素 -->
  <div>
    <h1>App.vue组件{{ xiaoji }}</h1>
    <button @click="xiugai">修改用户名</button>
    <!-- 3.以标签形式使用注册好的组件 -->
    <left></left>
    <right></right>
   
  </div>
</template>

<script>
//1.导入组件,一共三步
import left from '@/components/Left.vue'
import right from '@/components/Right.vue'

// 默认导出,这是固定写法
export default {
  // 组件的data不能像之前一样指向对象,组件中的data必须是一个函数
  data() {
    // 这个return出去的数据对象可以定义数据
    return {
      xiaoji: '你好'
    }
  },
  methods: {
    xiugai() {
      //在组件中,this就表示当前组件的实例对象
      console.log(this);
      this.xiaoji = "萧寂"
    }
  },
  // 2.对导入的组件进行注册
  components: {
    'left': left,
    'right': right
  },
  computed: {},
  // 当前组件中的过滤器
  filters: {}
}
</script>

<!-- less语法必须声明less -->
<style lang="less">
div {
  background-color: pink;

  h1 {
    background-color: red;
  }
}
</style>

在这里插入图片描述
成功将两个组件导入到App.vue了,如果某个组件需要另一个平级组件导入,也可以按照此方法导入即可

注册全局组件

当一个组件被多次引用,就需要多次注册,避免这种麻烦可以做一个全局组件来直接使用
在vue 项目的main.js入口文件中,通过Vue.component()方法,可以注册全局组件。
示例代码如下:
这里导入的是上面的count.vue

//导入需要全局注册的组件
import count from '@/components/Count.vue'
//参数1:字符串格式,表示组件的“注册名称"
//参数2:需要被全局注册的那个组件
Vue.component("mycount",count)

在这里插入图片描述
接下来就是在需要使用这个组件时,直接用组件名称作为template的一个双标签
在这里插入图片描述
在这里,我在right.vue和App.vue都使用标签展示这个组件
在这里插入图片描述
这样就完成了组件的全局注册和使用(切记:组件自己不能使用自己)

props自定义属性使用

当一个组件被多个组件复用时,由于每个组件需要显示的默认值不同,就导致所复用的这个组件需要传入什么值才能满足需求,这时候可以使用props属性定义数组了
还是以上面引入的count.vue为复用的组件为例
要求:left.vue和right.vue组件复用count组件,要求两个组件展示的初始值不同,必须为数字number,不能为空
代码展示:

<template>
  <div>
    <h5>Count 组件</h5>
    <p>count 的值是:{{ count }}</p>
    <button @click="count += 1">+1</button>

    <button @click="show">打印 this</button>
  </div>
</template>

<script>
export default {
  // props 是"自定义属性",允许使用者通过自定义属性,为当前组件指定初始值
  // 自定义属性的名字,是封装者自定义的(只要名称合法即可)
  // props 中的数据,可以直接在模板结构中被使用
  // 注意:props 是只读的,不要直接修改 props 的值,否则终端会报错!
  // props: ['init'],
  props: {
    // 自定义属性A : { /* 配置选项 */ },
    // 自定义属性B : { /* 配置选项 */ },
    // 自定义属性C : { /* 配置选项 */ },
    init: {
      // 如果外界使用 Count 组件的时候,没有传递 init 属性,则默认值生效
      default: 0,
      // init 的值类型必须是 Number 数字
      type: Number,
      // 必填项校验
      required: true
    }
  },

  data() {
    return {
      // 把 props 中的 init 值,转存到 count 上
      count: this.init
    }
  },
  methods: {
    show() {
      console.log(this)
    }
  }
}
</script>

<style lang="less"></style>

接下来是left.vue和right.vue组件代码
left.vue

<template>
  <div class="left-container">
    <h3>Left 组件</h3>
    <hr />
    <!-- 在这里给props的init一个初始值9,:为v-bind将属性的字符串类型转换为number类型 -->
    <mycount :init="9"></mycount>
  </div>
</template>

<script>
export default {}
</script>

<style lang="less" scoped>
.left-container {
  padding: 0 20px 20px;
  background-color: orange;
  min-height: 250px;
  flex: 1;
}

h3 {
  color: red;
}

// 当使用第三方组件库的时候,如果有修改第三方组件默认样式的需求,需要用到 /deep/
/deep/ h5 {
  color: pink;
}
</style>

right.vue

<template>
  <div class="right-container">
    <h3>Right 组件</h3>
    <hr />
	 <!-- 在这里给props的init一个初始值9,:为v-bind将属性的字符串类型转换为number类型 -->
    <mycount :init="6"></mycount>
  </div>
</template>

<script>
export default {}
</script>

<style lang="less">
.right-container {
  padding: 0 20px 20px;
  background-color: lightskyblue;
  min-height: 250px;
  flex: 1;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CRM客户关系管理:赢得和留住客户的指南

客户管理是一个涉及协调和管理客户与企业之间互动的过程。它对企业的商誉及其保留和获得新客户的能力有重大影响。 一般来说&#xff0c;客户管理可以分解成四个不同的部分&#xff1a; - 了解客户的需求以及他们想从你这里得到什么 - 满足这些要求并对他们的询问提供充分的…

EIZO船舶触摸屏维修T1502-B

EIZO船舶触摸屏使用注意事项&#xff1a; 1 由于显示器电子零件的性能需要约30分钟才能稳定,因此在电源开启之后,应调整显示器30分钟以上。 2为了降低因长期使用而出现的发光度变化以及保持稳定的发光度,建议您以较低亮度使用显示器。 3 当显示器长期显示一个图像的情况下再…

传统卷积与Transformers 优缺点对比

近两年Transformer如日中天&#xff0c;刷爆各大CV榜单&#xff0c;但在计算机视觉中&#xff0c;传统卷积就已经彻底输给Transformer了吗&#xff1f; 回答1 作者&#xff1a;DLing 链接&#xff1a;https://www.zhihu.com/question/531529633/answer/2819350360 看在工业界还…

【云原生进阶之容器】第二章Controller Manager原理--client-go剖析

2 Client-go Kubernetes 官方从 2016 年 8 月份开始,将 Kubernetes 资源操作相关的核心源码抽取出来,独立出来一个项目 client-go,Kubernetes中使用client-go作为Go语言的官方编程式交互客户端库,提供对api server服务的交互访问。对于k8s的二次开发,熟练掌握client-go是十…

大胆预测,2023年Android 行业什么技术最重要~

随着Android 时代的发展&#xff0c;在2022的这一年里&#xff0c;感觉自己经历了许多&#xff0c;从年初到年底&#xff0c;见证了不是互联网公司的裁员、优化、毕业、输送人才……等一些列的操作&#xff0c;估计有些人和我一样对Android未来感到茫然&#xff0c;不少人可能会…

发表计算机SCI论文,是先写中文,还是直接写英文论文? - 易智编译EaseEditing

经过高考、四六级和研究生考试&#xff0c;我们都有一定的英文基础&#xff0c;也都知道英文和中文的差别就是中国人和欧美人的思维差别。在这里对中英文写作的优缺点进行列举和分析&#xff1a; 直接写英文论文&#xff1a; &#xff08;1&#xff09;中英文表述方式差异明显…

【图像算法】pytesseract简单实现图片数字识别

【前置目的】 识别视频中是否包含目标元素&#xff1b; 抽象自动化&#xff0c;就是处理一段含有时间戳的视频&#xff1b; 再核心就是对视频进行图片裁减&#xff0c;识别出图片中的数字&#xff0c;做数学计算延时。 【学习地址】 环境&#xff1a;mac、python3、pytesserac…

PCB阻焊桥的工艺设计,华秋一文告诉你

PCB表面的一层漆称为阻焊油墨&#xff0c;也就是PCB线路板防焊油墨。阻焊油墨是PCB线路板中非常常见也是主要使用的油墨。阻焊油墨一般90%都是绿色的&#xff0c;但也有其他颜色&#xff0c;例如&#xff1a;红色、蓝色、黑色、白色、黄色称之为杂色油墨。 阻焊油墨的作用就是…

星尘数据完成5000万元A轮融资,Autolabeling加速自动驾驶量产

近日&#xff0c;国内领先的AI数据服务商星尘数据宣布完成A轮融资5000万元人民币&#xff0c;本轮融资由华映资本领投&#xff0c;小米生态链背景的厚天资本和瑞夏资本跟投。融资将用于端到端的数据闭环系统研发、商务拓展以及供应商合作。星尘数据创始人、CEO章磊表示&#xf…

用Python制作一个文件解压缩工具

经常由于各种压缩格式的不一样用到文件的解压缩时就需要下载不同的解压缩工具去处理不同的文件&#xff0c;以至于桌面上的压缩工具就有三四种&#xff0c;于是使用python做了一个包含各种常见格式的文件解压缩的小工具。 常见的压缩格式主要是下面的四种格式&#xff1a; zip…

New File Format:SpreadJS v16 Crack

New File Format 有你需要的更新内容&#xff0c;请大家及时更新到最新版 SpreadJS V16 has just released, and with it, Ω578867473 some exciting new features, including a new SpreadJS file format and enhancements to the TableSheet, Designer, Calculation, and W…

基于51单片机的数字电压表(TCL549)(Proteus仿真+程序)

编号&#xff1a;31 基于51单片机的数字电压表&#xff08;TCL549&#xff09; 功能描述&#xff1a; 本系统由51单片机最小系统TCL549模块一路模拟量输入模块液晶1602显示模块 1、主控制器是89C52单片机 2、TCL54模数转换器进行A/D转换&#xff0c;读取电压一路数据&#xf…

VSCode(Flutter开发)使用的 4 个 技巧

1.更清晰的文件夹结构 在创建一个新的 flutter 项目后&#xff0c;有太多的文件。但是我们可以在 VSCode 中用非常简单的步骤来构造这些文件: 打开命令面板(Ctrl/Cmd Shift P) 键入“首选项: 打开设置(JSON)” 将以下代码行添加到 setings.json: { "explorer.fileNes…

yapi的安装

Yapi的安装 Yapi是一款不错的接口管理软件&#xff0c;我主要用它来进行接口Mock。 Yapi安装所需环境&#xff1a; Node.js&#xff08;7.6&#xff09;Mongodb&#xff08;2.6&#xff09;git 各环境安装地址&#xff1a; git&#xff1a;https://git-scm.com/downloadsN…

[极客大挑战 2019]Buy Flag1(BUUCTF)

前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 题目描述 解题工具: 我爱用edit this cookie2和hackerbar&#xff0c; 当然也可以burpsuite和fiddler抓包 解题过程: 看到他说flag要100000000 MONEY&#xff0c; 还要是Cuits students&#xff0c; …

windows11 elasticsearch-head 插件安装

1.elasticsearch-head 插件介绍 elasticSearch-head就是一款能连接ElasticSearch搜索引擎&#xff0c;并提供可视化的操作页面对elasticSearch搜索引擎进行各种设置和数据检索功能的管理插件&#xff0c;如在head插件页面编写RESTful接口风格的请求&#xff0c;就可以对Elastic…

DaVinci:限定器之蒙版优化

调色页面&#xff1a;限定器Color&#xff1a;Qualifier使用限定器等工具进行抠像后&#xff0c;所得到的遮罩 Matte&#xff08;又称为“蒙版”&#xff09;可能会存在诸多问题&#xff0c;比如边缘过于锐利或呈锯齿状、遍布杂点&#xff08;噪点&#xff09;或中间有不规则的…

【pandas】教程:5-从已有数据中创建新列

Pandas 从已有的数据列中创建新列 加载数据 本节使用的数据为 data/air_quality_no2.csv&#xff0c;链接为 pandas案例和教程所使用的数据-机器学习文档类资源-CSDN文库 通过 假设在25&#xff0c;1013hPa 压力下密度为 1.882 air_quality["london_mg_per_cubic"]…

java调用dubbo服务接口_Dubbo使用invoke指令来调用dubbo接口以及telnet命令连接Dubbo服务

java调用dubbo服务接口_Dubbo使用invoke指令来调用dubbo接口前言正文Mac使用telnet命令提示&#xff1a;command not found&#xff0c;Mac安装telnet 命令一、telnet是什么&#xff1f;二、telnet命令连接Dubbo服务显示列表 – ls显示服务端口和连接 – ps跳转服务 – cd显示当…

[虚幻引擎][UE][UE5]在UE5中使用线条画一颗简单的三维圣诞树(练习向)

TOP 一、前言 搞得不好看&#xff0c;简单了解一下叭。主要是在三维中使用线条。需要理解圆的方程式。 &#xff08;小声逼逼&#xff0c;后来还想搞个三维圆锥螺旋线写个点球点缀一下的&#xff0c;结果上网一搜没人给出方程式&#xff0c;只好不了了之了&#xff0c;有哪位…