当前位置: 首页 > article >正文

vue_组件基础

单文件组件

Vue 单文件组件(又名 *.vue 文件,缩写为 SFC)是一种特殊的文件格式,它允许将 Vue 组件的模板、逻辑  样式封装在单个文件中

<template>
  <h3>单文件组件</h3>
</template>


<script>
export default {
  name:"MyComponent"
}
</script>


<style scoped>
h3{
  color: red;
}
</style>

加载组件

第一步:引入组件 import MyComponentVue from './components/MyComponent.vue'

第二步:挂载组件 components: { MyComponentVue }

第三步:显示组件 <my-componentVue />

 

组件的组织

通常一个应用会以一棵嵌套的组件树的形式来组织


Props组件交互

组件与组件之间是需要存在交互的,否则完全没关系,组件的意义就很小了

Prop 是你可以在组件上注册的一些自定义 attribute

<my-componentVue title="标题"/>
<template>
  <h3>单文件组件</h3>
  <p>{{ title }}</p>
</template>

<script>
export default {
  name:"MyComponent",
  props:{
    title:{
      type:String,
      default:""
     }
   }
}
</script>

Prop 类型

Prop传递参数其实是没有类型限制的

props: {
  title: String,
  likes: Number,
  isPublished: Boolean,
  commentIds: Array,
  author: Object,
  callback: Function
}

提示

数据类型为数组或者对象的时候,默认值是需要返回工厂模式(函数)


自定义事件组件交互

自定义事件可以在组件中反向传递数据,prop 可以将数据从父组件传递到子组件,那么反向如何操作呢,就可以利用自定义事件实现 $emit

<template>
  <h3>单文件组件</h3>
  <button @click="sendHandle">发送数据</button>
</template>


<script>
export default {
  name: "MyComponent",
  methods:{
    sendHandle(){
      this.$emit("onCustom","数据")
     }
   }
}
</script>


<style scoped>
h3 {
  color: red;
}
</style>
<template>
 <my-componentVue @onCustom="getData" />
</template>


<script>


import MyComponentVue from './components/MyComponent.vue'


export default {
 name: 'App',
 components: {
  MyComponentVue
  },
 methods: {
  getData(data) {
   console.log(data);
   }
  }
}
</script>

组件生命周期

每个组件在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会

为了方便记忆,我们可以将他们分类:

创建时:beforeCreatecreated

渲染时:beforeMountmounted

更新时:beforeUpdateupdated

卸载时:beforeUnmountunmounted


http://www.kler.cn/a/18456.html

相关文章:

  • 虚拟机安装Ubuntu 24.04服务器版(命令行版)
  • 实现一个BLE HID鼠标
  • Chrome使用IE内核
  • 6.2 对角化矩阵(2)
  • 软件测试面试题(800道)【附带答案】持续更新...
  • 编译ffmpeg动态库时设置RPATH为$ORIGIN
  • chatgpt的150个指令大全
  • GraphHopper调研笔记
  • Linux | Ubuntu配置JDK源码编译环境
  • canvas的三种渲染模式的区别
  • 点对点通讯的好处和坏处?能否实现及时通讯?
  • 树莓派系统配置-raspi-config
  • [python] Python类型提示指北
  • 多媒体通信有些SCI期刊推荐? - 易智编译EaseEditing
  • Java线程池编码示例
  • 【模拟IC学习笔记】 反馈
  • 人脉社交社群运营系统源码
  • python能成为编程届的网红么?
  • 【算法题】2401. 最长优雅子数组
  • 自动修改文章的软件-文章原创软件
  • 常用工作负载
  • C typedef和define的异同
  • IntelliNode:Node.js大模型访问统一接口库【Gen AI】
  • Java开发手册-9
  • 2023年4月的12篇AI论文推荐
  • vue3学习六 hooks