vue知识点(4)

ops/2025/3/14 9:42:59/

依赖注入

Provide (提供)

父组件通过 provide 提供数据或方法。

<script setup>
import { provide } from 'vue'provide(/* 注入名 */ 'message', /* 值 */ 'hello!')
</script>

Inject (注入)

子组件通过 inject 接收父组件提供的数据或方法。

<script setup>
import { inject } from 'vue'
// 通过注入名来查找值
const message = inject('message')
</script>

和响应式数据配合使用

// 父组件
<template><div><h1>父组件</h1><ChildComponent /><button @click="updateMessage">更新消息</button></div>
</template><script setup>
import { ref, provide } from 'vue'
import ChildComponent from '../components/ChildComponent.vue'
const message = ref('这是来自父组件的消息')
provide('messageValue', message)
const updateMessage = () => {message.value = '新的消息'
}
</script>
// 子组件
<template><div><h2>子组件</h2><p>{{ injectedMessage }}</p></div>
</template><script setup>
import { ref, inject } from 'vue'
// 注入响应式数据
const injectedMessage = inject('messageValue')
</script>

组件间的 v-modal

v-model 可以在组件上使用以实现数据双向绑定。defineModel() 工具函数用于简化自定义组件中 v-model 的实现,不需要再手动定义 propsemit 事件。

<template><div><h1>父组件</h1><p>输入的值:{{ inputValue }}</p><input type="text" v-model="inputValue" /><ChildComponent v-model="inputValue" /></div>
</template><script setup>
import { ref } from 'vue'
import ChildComponent from '../components/ChildComponent.vue'
const inputValue = ref('')
</script>
<template><div><h2>子组件</h2><input v-model="model" /></div>
</template><script setup>
import { ref, defineModel } from 'vue'// 使用 defineModel 创建双向绑定
const model = defineModel('inputValue')
</script>

多个 v-model 绑定

//父组件
<template><div><h1>父组件</h1><p>输入的值:{{ inputValue }}</p><input type="text" v-model="inputValue" />// 可以创建多个双向绑定// 父组件通过 v-model:inputValue 和 v-model:modelValue 分别绑定 inputValue 和 modelValue。<ChildComponentv-model:inputValue="inputValue"v-model:modelValue="modelValue"/><p>子组件的值:{{ modelValue }}</p></div>
</template><script setup>
import { ref } from 'vue'
import ChildComponent from '../components/ChildComponent.vue'
const inputValue = ref('')
const modelValue = ref('')
</script>
<template><div><h2>子组件</h2><input v-model="model" /><input type="text" v-model="modelValue" /></div>
</template><script setup>
import { ref, defineModel } from 'vue'// 子组件通过 defineModel('inputValue') 和 defineModel('modelValue') 创建多个双向绑定。
const model = defineModel('inputValue')
const modelValue = defineModel('modelValue')
</script>

http://www.ppmy.cn/ops/165628.html

相关文章

江科大51单片机笔记【16】AD/DA转换(下)

写在前言 此为博主自学江科大51单片机&#xff08;B站&#xff09;的笔记&#xff0c;方便后续重温知识 在后面的章节中&#xff0c;为了防止篇幅过长和易于查找&#xff0c;我把一个小节分成两部分来发&#xff0c;上章节主要是关于本节课的硬件介绍、电路图、原理图等理论知识…

《MySQL数据库从零搭建到高效管理|库的基本操作》

目录 一、数据库的操作 1.1 展示数据库 1.2 创建数据库 1.3 使用数据库 1.4 查看当前数据库 1.5 删除数据库 1.6 小结 二、常用数据类型 2.1 数值类型 2.2 字符串类型 2.3 日期类型 一、数据库的操作 打开MySQL命令行客户端&#xff0c;安装完MySQL后会有两个客户端…

C语言(23)

字符串函数 11.strstr函数 1.1函数介绍&#xff1a; 头文件&#xff1a;string.h char *strstr ( const char * str1,const char *str2); 作用&#xff1a;在一个字符串&#xff08;str1&#xff09;中寻找另外一个字符串&#xff08;str2&#xff09;是否出现过 如果找到…

从异步讲到回调函数

在讲接下来的要点之前&#xff0c;我们必须理解两个名词&#xff1a;同步和异步。 所谓同步&#xff0c;指的是协同步调。既然叫协同&#xff0c;所以至少要有2个以上的事物存在。协同的结果就是&#xff1a;多个事物不能同时进行&#xff0c;必须一个一个的来&#xff0c;上一…

给AI编程泼一盆冷水

AI确实扩大了普通人的能力边界&#xff0c;但是如果你连自己想要什么都描述不清楚&#xff0c;更不知道AI干了什么&#xff0c;你最好停下来认真的学习一下。 AI并没有消除认知差距&#xff0c;而是让人与人的认知差距急剧拉大了。 一、效率提升与隐性成本的博弈 AI编程工具如…

React 常用 Hooks 详细解析

React Hooks 是 React 16.8 引入的核心特性&#xff0c;允许在函数组件中使用状态、生命周期等特性&#xff0c;替代类组件的复杂逻辑。以下是常用 Hooks 的详细解析及最佳实践&#xff1a; 1. useState&#xff1a;状态管理 用途&#xff1a;在函数组件中定义和更新局部状态。…

鸿蒙开发者社区资源的重要性

鸿蒙系统&#xff0c;作为华为公司自主研发的操作系统&#xff0c;旨在为各类智能设备提供统一的平台。它不仅支持手机、平板电脑等移动设备&#xff0c;还涵盖了物联网&#xff08;IoT&#xff09;设备和其他智能家居产品。鸿蒙系统的开发环境和工具链对于开发者来说至关重要&…

《又是二叉树?递归与回溯的经典应用》

“ 我喜欢晴天&#xff0c;你恰好是最好的太阳” 226.翻转二叉树 力扣题目链接(opens new window) 翻转一棵二叉树。 这道题我们可以通过递归法解决&#xff0c;我们只要递归的把每一个节点的左右孩子反转一下就能解决了。 代码如下&#xff1a; var invertTree function(ro…