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

11年始终专注营销型网站网站整体风格设计

11年始终专注营销型网站,网站整体风格设计,四川万景建设工程有限公司网站,做针对国外的网站一、ref 基础在 Vue3 中,ref 是一个非常重要的响应式 API,它用于创建一个响应式的引用。1.1 ref 的基本用法javascriptimport { ref } from vue;const count ref(0); // 创建一个响应式引用,初始值为0console.log(count.value); // 访问值需…

一、ref 基础

在 Vue3 中,ref 是一个非常重要的响应式 API,它用于创建一个响应式的引用。

1.1 ref 的基本用法

javascript

import { ref } from 'vue';const count = ref(0); // 创建一个响应式引用,初始值为0console.log(count.value); // 访问值需要使用 .value
count.value++; // 修改值

特点:

  • ref 可以包装任何类型的值,使其变成响应式

  • 在 JavaScript 中访问或修改值时需要使用 .value

  • 在模板中使用时不需要 .value,Vue 会自动解包

1.2 为什么需要 ref

Vue3 使用 Proxy 实现响应式,但 Proxy 无法直接代理原始值(如 number, string 等)。ref 通过将这些值包装在一个对象中,解决了这个问题。

二、模板引用

模板引用是指直接在模板中访问 DOM 元素或组件实例的能力。

2.1 基本模板引用

html

<template><input ref="inputRef" type="text" />
</template><script setup>
import { ref, onMounted } from 'vue';const inputRef = ref(null); // 必须与模板中的 ref 同名onMounted(() => {inputRef.value.focus(); // 在挂载后自动聚焦
});
</script>

要点:

  1. 声明一个与模板中 ref 同名的响应式引用

  2. 在组件挂载后,inputRef.value 将指向 DOM 元素

  3. 只能在组件挂载后访问 ref 的值

2.2 在 v-for 中使用模板引用

html

<template><ul><li v-for="item in list" :key="item.id" ref="itemRefs">{{ item.text }}</li></ul>
</template><script setup>
import { ref, onMounted } from 'vue';const list = ref([{ id: 1, text: 'Item 1' },{ id: 2, text: 'Item 2' }
]);const itemRefs = ref([]);onMounted(() => {console.log(itemRefs.value); // 包含所有 li 元素的数组
});
</script>

注意: 在 v-for 中使用 ref 时,ref 的值将是一个包含所有元素的数组。

三、组件引用与 defineExpose

3.1 引用子组件

html

<!-- Parent.vue -->
<template><Child ref="childRef" />
</template><script setup>
import { ref, onMounted } from 'vue';
import Child from './Child.vue';const childRef = ref(null);onMounted(() => {console.log(childRef.value); // 子组件实例
});
</script>

3.2 使用 defineExpose 暴露组件方法

默认情况下,使用 <script setup> 的组件是封闭的,父组件无法访问子组件的任何内容。需要使用 defineExpose 显式暴露:

html

<!-- Child.vue -->
<script setup>
import { ref } from 'vue';const count = ref(0);function increment() {count.value++;
}// 暴露给父组件
defineExpose({increment,count
});
</script>

现在父组件可以访问这些暴露的内容:

javascript

// 在 Parent.vue 中
onMounted(() => {childRef.value.increment(); // 调用子组件方法console.log(childRef.value.count); // 访问子组件数据
});

3.3 defineExpose 的典型用途

  1. 暴露子组件方法供父组件调用

  2. 暴露子组件状态供父组件访问

  3. 创建可复用的组件逻辑(如表单验证、对话框控制等)

四、最佳实践

  1. 命名规范:使用有意义的 ref 名称,如 formRefmodalRef 等

  2. 避免过度使用:优先考虑 props/emit 进行组件通信

  3. null 检查:访问 ref 值前检查是否为 null

  4. 组合式函数:将 ref 逻辑封装到组合式函数中提高复用性

五、总结

  • ref 是 Vue3 响应式系统的核心 API 之一

  • 模板引用可以方便地访问 DOM 元素或组件实例

  • defineExpose 用于控制子组件向父组件暴露的内容

  • 合理使用这些特性可以创建更灵活、更易维护的组件

http://www.dtcms.com/a/401624.html

相关文章:

  • 合肥做网站推广网络信息安全
  • 做英文网站的流程深圳购物网站
  • 江西网站设计方案长沙网站优化推广
  • 电子商务网站建设的整体规划wordpress 采集都有哪些
  • 做网站客户没有付定金打开百度网站
  • wordpress网站打开很卡手机网站违规禁止访问怎么办
  • 返利网站程序鲜花类网站建设策划书范文
  • 买证书网站开发工程师北京学设计去哪个网站
  • 孝义做网站wordpress首页显示指定分类文章
  • 自己做的网站慢是什么原因廉江网站开发公司
  • 彩票网站里的统计怎么做游戏挂机云服务器
  • 做网站多少钱一年wordpress茶叶模板
  • 网站制作书生国家建设部网站
  • 创造网站需要多少钱长沙房产网最新楼盘地图
  • 怎样建一个自己公司的网站wordpress 三栏主题
  • 一起做网店吧兰州seo快速排名
  • 东莞常平建网站公司龙华做网站
  • 网站安全 维护wordpress编辑新页面
  • 做网站现在什么最赚钱吗5000元做百度推广效果怎么样
  • 福州网站设计知名乐云seo沈阳建设工程信息网中介
  • 注册域名后怎么建网站兽装全身定制大概价格
  • 河北城乡建设学校官方网站讨论致同国际网站建设情况
  • 做网站编程时容易遇到的问题网站关键词推广价格
  • 黑龙江省建设银行网站快速html5网页设计的网站
  • 美食网站建设规划书班级优化大师怎么用
  • 网站备案号位置做任务给佣金的网站
  • 保定网站制作推广公司宜昌营销型网站建设
  • 巨野做网站的wordpress 目录seo
  • 广州南沙区网站建设html5 wap 网站模板
  • 深圳网站建设微信商城开发个人建设网站维护费是多少