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

Vue(15)——组合式API②

生命周期函数 

选项式组合式
beforeCreate/createdsetup
beforeMountonBeforeMount            
mountedonMouned
beforeUpdateonBeforeUpdate
updatedonUpdated
beforeUnmountonBeforeUnmount
unmountedonUnmounted

父子通信

父传子基本思想:

  1. 父组件中给子组件绑定属性
  2. 子组件内部通过props选项接收

子传父基本思想:

  1. 父组件中给子组件标签通过@绑定事件
  2. 子组件内部通过emit方法触发事件 

 

模版引用

通过ref标识获取真实的dom对象或者组件实例对象

  1. 调用ref函数生成一个ref对象
  2. 通过ref标识绑定ref对象到标签

 获取dom对象:

<script setup>
import { onMounted, ref } from 'vue';
import test from './components/test.vue';

const inp = ref(null)
//生命周期钩子
onMounted(()=>{
  console.log(inp.value);
  // inp.value.focus()
})
const clifn = () =>{
  inp.value.focus()
}
</script>

<template>
  <div>
    <input ref="inp" type="text">
    <button @click="clifn">点击聚焦</button>
  </div>
  <test></test>
</template>


获取组件:

默认情况下<script setup>语法糖下组件内部的属性和方法是不开放给父组件访问的,可以通过defineExpose编译宏指定哪些属性和方法允许访问

 


<script setup>
import { onMounted, ref } from 'vue';
import test from './components/test.vue';

const testref = ref(null)

const getref = () =>{
  console.log(testref);
  console.log(testref.value);
  
}
</script>

<template>
  
  <test ref="testref"></test>
  <button @click="getref">获取组件</button>

</template>

             

provide, inject

顶层组件向任意的底层组件传递数据和方法,实现跨组件通信

跨层传递普通数据:

1.顶层组件通过provide函数提供数据

2.底层组件通过inject函数获取数据

 

<script setup>
import { provide} from 'vue';
import centerCom from './components/center-com.vue';

provide('theme-color','pink')
</script>

<template>
<div>
  <h1>我是顶层组件</h1>
  <centerCom></centerCom>
</div>
</template>
<script setup>
import { inject } from 'vue';

const themecolor = inject('theme-color')
</script>

<template>
<div>
  <h3>我是底层组件{{ themecolor }}</h3>
</div>
</template>

 跨层传递响应式数据:

想要在子组件改变父组件定义的数据,只需要父组件使用provide提供函数,在子组件接收就行。


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

相关文章:

  • 界面控件Kendo UI for Angular中文教程:如何构建带图表的仪表板?(一)
  • Vue 项目打包后环境变量丢失问题(清除缓存),区分.env和.env.*文件
  • 使用 Visual Studio Installer 彻底卸载 Visual Studio方法与下载
  • 使用kalibr_calibration标定相机(realsense)和imu(h7min)
  • 数据结构-集合
  • 物理设备命名规则(Linux网络服务器 15)
  • 关于SSR和SSG
  • PDF产品册营销推广利器FLBOOK
  • 每日学习一个数据结构-哈夫曼树Huffman Tree
  • 倒排索引(反向索引)
  • Map和Set有什么区别?
  • 高刷显示器哪个好?540Hz才有资格称高刷
  • 基于深度学习的多智能体协作
  • 电力行业螺钉螺帽螺丝缺失检测数据集 voc yol
  • 【Linux】常用指令【更详细,带实操】
  • 论文(六):Fire-Net: A Deep Learning Framework for Active Forest Fire Detection
  • Vue 3 是 Vue.js 的下一代版本,它在许多方面都带来了显著的改进和变化,旨在提高开发效率和用户体验
  • 如何使用 Next.js 进行服务端渲染(Server-Side Rendering, SSR)
  • leetcode234回文链表
  • 初学者的鸿蒙多线程并发之 TaskPool 踩坑之旅
  • 我向大模型求了一份Stable Diffusion的应用场景
  • 科研绘图系列:R语言多个AUC曲线图(multiple AUC curves)
  • 清理Go/Rust编译时产生的缓存
  • 1.《DevOps》系列K8S部署CICD流水线之部署K8S集群~version1.28.2
  • 36.右旋字符串
  • Llama3.1的部署与使用