个人技术分享

目录

一.模版引用

二.组件组成

1.引入组件

2.注入组件

3.显示组件

三.组件嵌套关系

四.组件注册方式

五.组件传递数据

六.组件事件


一.模版引用

        虽然Vue的声明性渲染模型为你抽象了大部分对DOM的直接操作,但在某些情况下,我们仍然需要直接访问底层DOM元素。

DOM的常见操作:

  • 内容改变:{{模版语法}}
  • 样式改变:v-bind
  • 绑定事件:v-on

如下,当通过原生JS操作DOM的方式来获取元素,需要给元素添加ref属性:

  <div ref="origin">原形态</div>
  <button @click="myBind">变更形态</button>
myBind(){
    this.$refs.origin.innerHTML="变更形态";
}

点击后,按钮重新更改文本内容:

如果没有特别的需求,不要随意操控DOM元素。

二.组件组成

组件最大的优势就是可复用性,我们一般会将Vue组件定义在一个单独的.vue文件中,这被叫做单文件组件,检查SFC。

概括地说,一个vue组件包含了一个页面的全部内容:结构+样式+行为。

主界面名为app.vue,如果想自定义一个组件,需要在components目录下面创建一个名为.vue后缀的组件,如果想在主界面显示,需要遵循如下步骤:(此处组件名为test.vue)

1.引入组件

import test from "./components/test.vue"

上述要写在script标签中。 

2.注入组件

export default
{
 compontents:{
    test
 }
}

3.显示组件

<template>
    <test />
</template>

需要注意的是,组件必须存在template标签!

注:如若vue文件中的style标签添加了scope属性,则其只能在当前组件中生效。

三.组件嵌套关系

vue为组件化开发,组件之间会产生嵌套关系。

组件允许我们将UI划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织乘层层嵌套的树状结构。

如上,模块化有助于分离各个子模块独立开发功能模块。 

四.组件注册方式

即组件的引入方式,分为全局注册和局部注册。上文中提到的即为局部注册方式,只能在当前组件中引用目标组件,接下来分享全局的注册方式。代码需要写在main.js中。

import { createApp } from 'vue'
import App from './App.vue'
import test from './components/test.vue'

const app=createApp(App)

//必须在中间部分写注册组件的内容
app.component("Test",test)
app.mount('#app')

 全局注册的一些问题:

五.组件传递数据

组件与组件之间不是完全独立的,而是有交集的,那就是组件与组件之间是可以传递数据的,解决方案是props。

需要注意的是,props传参时只允许元素从父级传递到子级,不能反向而行。如下两张图片分别为父级组件和子级组件:

子集中只需要用props数组包裹即可。(名字任意,title不是固定名字~) 

动态传参与之同理,只需要用v-bind即可绑定。 


各种类型的数据都可以传递~

当type类型与之不一致时,会在控制行中出现如下的警告信息: 

 子元素中可以设置默认值,如下:

 设置为必选项,当未传输数据时会产生警告:

另外需要注意的是:prop是只读的。

六.组件事件

在组件的模版表达式中,可以直接使用$emit方法触发自定义事件,触发自定义事件的目的是组件之间传递数据。

通常用于子组件传递给父组件数据。