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

石排镇专业建站公司wordpress产品定制

石排镇专业建站公司,wordpress产品定制,小程序发布流程怎么弄,icp备案添加网站重生之我在学Vue–第11天 Vue 3 高级特性 文章目录 重生之我在学Vue--第11天 Vue 3 高级特性前言一、Teleport:打破组件层级的瞬移术1. 什么是Teleport?2. 核心用法3. 实战技巧 二、Suspense:异步组件的优雅过渡1. 为什么需要Suspense&#x…

重生之我在学Vue–第11天 Vue 3 高级特性

文章目录

  • 重生之我在学Vue--第11天 Vue 3 高级特性
    • 前言
    • 一、Teleport:打破组件层级的瞬移术
      • 1. 什么是Teleport?
      • 2. 核心用法
      • 3. 实战技巧
    • 二、Suspense:异步组件的优雅过渡
      • 1. 为什么需要Suspense?
      • 2. 基础结构
      • 3. 高级用法:错误捕获
    • 三、自定义指令:打造专属DOM魔法
      • 1. 指令生命周期
      • 2. 实现一个v-click-outside指令
      • 3. 指令参数解析
    • 四、今日任务与总结
      • 必做任务清单
      • 高频面试题
      • 总结

前言

🚀 进阶之路正式开启!前10天我们完成了Vue3基础体系搭建,今天将解锁三大高阶技能:Teleport瞬移组件Suspense异步边界自定义指令魔法。这些特性能让你的Vue应用拥有更强大的交互能力和性能表现!

Vue3 官方中文文档传送点: 简介 | Vue.js

📌 今日重点文档:

  • Teleport
  • Suspense
  • 自定义指令

Vue前端成仙之路:Vue 前端成仙之路_野生的程序媛的博客-CSDN博客

GO后端成神之路:Go 后端成神之路_野生的程序媛的博客-CSDN博客

一、Teleport:打破组件层级的瞬移术

1. 什么是Teleport?

解决组件嵌套导致的DOM结构问题,可以将组件内容渲染到任意DOM节点中。就像React的Portal,但更Vue!

经典场景
• 全局弹窗/模态框
• 全屏Loading
• 通知提示

2. 核心用法

<template><button @click="showModal = true">打开弹窗</button><Teleport to="body"><div v-if="showModal" class="modal"><h3>我是瞬移的弹窗</h3><button @click="showModal = false">关闭</button></div></Teleport>
</template>

关键点
to属性接收CSS选择器或DOM元素
• 支持多个Teleport组件合并到同一目标节点

3. 实战技巧

// 动态选择目标节点
const target = computed(() => isMobile.value ? '#mobile-modal' : '#desktop-modal'
)
<Teleport :to="target"><!-- 内容 -->
</Teleport>

二、Suspense:异步组件的优雅过渡

1. 为什么需要Suspense?

处理异步组件加载时的等待状态,提供统一的Loading和Error处理方案。

2. 基础结构

<Suspense><!-- 异步组件 --><template #default><AsyncComponent /></template><!-- 加载状态 --><template #fallback><div class="loading">加载中...</div></template>
</Suspense>

3. 高级用法:错误捕获

<template><Suspense @resolve="onResolve" @pending="onPending" @fallback="onFallback"><!-- 组件内容 --></Suspense>
</template><script setup>
const onErrorCaptured = (err) => {console.error('异步组件加载失败:', err)return true // 阻止错误继续冒泡
}
</script>

三、自定义指令:打造专属DOM魔法

1. 指令生命周期

钩子函数触发时机
created元素属性初始化前
beforeMount元素挂载到DOM前
mounted元素挂载完成后
beforeUpdate组件更新前
updated组件更新后
beforeUnmount组件卸载前
unmounted组件卸载后

2. 实现一个v-click-outside指令

// directives/clickOutside.js
export default {beforeMount(el, binding) {el._clickOutside = (e) => {if (!el.contains(e.target)) {binding.value()}}document.addEventListener('click', el._clickOutside)},unmounted(el) {document.removeEventListener('click', el._clickOutside)}
}
<template><div v-click-outside="closeMenu"><!-- 下拉菜单内容 --></div>
</template>

3. 指令参数解析

// 使用方式:v-demo:arg.modifier="value"
{mounted(el, binding) {console.log(binding.arg)     // 'arg'console.log(binding.modifiers) // { modifier: true }console.log(binding.value)   // 绑定的值}
}

四、今日任务与总结

必做任务清单

  1. Teleport实践
    • 在项目中实现一个全局通知组件,要求:
    ◦ 从深层次组件触发通知
    ◦ 通知显示在页面右上角固定位置

  2. Suspense挑战
    • 改造任务详情页:
    ◦ 使用异步组件加载详情内容
    ◦ 添加骨架屏加载效果
    ◦ 处理接口加载失败状态

  3. 自定义指令开发
    • 实现一个v-tooltip指令:
    ◦ 鼠标悬停时显示提示文字
    ◦ 支持位置控制(上/下/左/右)
    ◦ 支持延迟显示

高频面试题

  1. Teleport组件能否和父组件通信?如何实现?

    答案
    Teleport 组件可以与父组件正常通信,因为它的逻辑作用域仍然属于父组件,只是DOM 结构被渲染到其他位置。通信方式与普通组件完全一致:

    • Props 传递:父组件通过 props 向 Teleport 内的子组件传值
    • 事件触发:子组件通过 emit 触发父组件的事件
    • 依赖注入:使用 provide/inject 跨层级通信
  2. Suspense是否可以捕获子组件内的所有异步操作?
    答案
    Suspense ​只能捕获以下两种异步场景

    1. 异步组件加载defineAsyncComponent 加载的组件)
    2. 组件顶层 async setup()(组件 setup 函数返回 Promise)

    无法捕获的场景

    • 子组件内的生命周期钩子中的异步操作(如 onMounted 中的 setTimeout
    • 事件处理函数中的异步操作(如按钮点击后的 fetch 请求)
    • 非顶层 setup 中的异步逻辑

    解决方案
    对于其他异步场景,需自行实现 Loading 状态(如使用 v-if + 加载状态变量)。

  3. 自定义指令和组件的使用场景如何区分?

    答案

    核心区别

    自定义指令组件
    主要用途封装DOM 操作行为封装UI 和逻辑的可复用单元
    数据流通过指令值单向传递支持完整的 props/emit 数据流
    模板结构无模板,直接操作元素可包含模板、样式和逻辑
    复用场景跨组件复用 DOM 交互行为复用带有特定 UI 和功能的模块

    使用场景对比

    • 适合指令的场景
      • 自动聚焦输入框 (v-focus)
      • 点击外部关闭菜单 (v-click-outside)
      • 滚动加载 (v-infinite-scroll)
    • 适合组件的场景
      • 带样式的模态框
      • 表单输入控件(如日期选择器)
      • 数据表格(含分页、排序功能)

    经验法则

    • 当需要直接操作 DOM添加全局行为时用指令
    • 当需要渲染复杂 UI 结构封装独立功能模块时用组件

总结

特性核心价值应用场景
Teleport突破组件DOM层级限制全局弹窗/通知
Suspense统一管理异步加载状态路由懒加载/数据预取
自定义指令直接操作DOM实现特殊交互点击外部/滚动加载/动画

明天预告:🚀 Vue 3 + TypeScript 类型系统深度整合


文章转载自:

http://mpnHok6N.bsrcr.cn
http://Zm3TSlpH.bsrcr.cn
http://BYyY418I.bsrcr.cn
http://ZKaN3hGA.bsrcr.cn
http://rtZ3fG3i.bsrcr.cn
http://xAejeZce.bsrcr.cn
http://L67ZB0VT.bsrcr.cn
http://ixTsi2xR.bsrcr.cn
http://UvcaCia7.bsrcr.cn
http://JazzhrrS.bsrcr.cn
http://5wyvAO69.bsrcr.cn
http://6wjQpGPn.bsrcr.cn
http://ifqDfMy5.bsrcr.cn
http://NMJcDVHz.bsrcr.cn
http://oCyEeYbt.bsrcr.cn
http://aTJMJQ8N.bsrcr.cn
http://PYglendy.bsrcr.cn
http://L6bmaY3X.bsrcr.cn
http://p2jPiYPx.bsrcr.cn
http://rDIjfVe1.bsrcr.cn
http://Lbtqs43w.bsrcr.cn
http://6j4z8ohU.bsrcr.cn
http://YxhVz8Yw.bsrcr.cn
http://hB6Y6Fph.bsrcr.cn
http://yxrJlPp8.bsrcr.cn
http://xY30aaBS.bsrcr.cn
http://biCvqvuR.bsrcr.cn
http://oSNwjE3X.bsrcr.cn
http://f8KOn9UB.bsrcr.cn
http://QMwYKzHX.bsrcr.cn
http://www.dtcms.com/wzjs/768042.html

相关文章:

  • 学校的网站的代码模板天津是哪个省
  • 朔州市住房与城乡建设厅网站关于建设设计院公司网站的建议
  • 企业搭建网站的必要性软件工程专业就业现状
  • 网站建设费用计入固定资产镇江高端网站建设
  • 网页游戏网站快手网站在线服务
  • php网站开发if的代码网站信息
  • 建设部网站 干部学院 一级注册建筑师培训 2014年网站制作案例 立邦
  • 专业购物网站建设哪家好威海哪有网站建设
  • 连云港网站优化方案建网站需要多少费用
  • 做网站基本教程平面广告创意设计
  • 前端手机网站设计公司logo设计
  • 外贸seo网站搭建网络推广产品公司
  • 外贸网站运营工作内容wordpress使用老的编辑器
  • 北京市网站建设企业wordpress api 插件
  • 网站打开慢什么原因呢网站统计分析
  • 小企业网站建设的措施seo推广公司排名
  • 网站慢用台服务器做跳板电子商务网站的建设与规划书
  • 罗湖实惠的网站建设费用如何为网站开发app
  • 可信网站认证费用网站虚拟主持
  • 静安企业网站制作成品超市网站
  • 手机网站怎么打开wordpress主题怎么设置
  • 怎样创建网站挣钱东莞加盟网站建设
  • 小公司怎么做网站腾讯云网站建设教学视频
  • 淘宝客网站开发 猪八戒wordpress 邮件找客户端
  • 网站页面footer的copy如何给网站做外链
  • 做ppt到哪个网站找图片mysql网站开发
  • 做游戏网站有几个要素重庆seo网站
  • 做外贸soho网站的公司广东网站建站公司
  • 如何建立优秀企业网站店标在线制作免费
  • 小程序定制开发深圳seo泛目录培训