前端小食堂 | Day11 - Vue.js の烹饪秘籍

news2025/3/11 21:28:21

🎨 今日主菜:Vue 常用技巧全家桶

1. 响应式烹饪秘籍
<script setup>  
// 🍳 精准控制响应式  
const counter = ref(0); // 基本类型用ref  
const user = reactive({ name: '小明', age: 18 }); // 对象用reactive  

// 🔥 自动追踪依赖  
watchEffect(() => {  
  console.log(`计数器变化:${counter.value}`);  
});  

// 🧊 深层监听对象  
watch(() => user.age, (newVal, oldVal) => {  
  console.log(`年龄从 ${oldVal} → ${newVal}`);  
}, { deep: true });  
</script>  

<template>  
  <button @click="counter++">{{ counter }}</button>  
  <input v-model="user.age" type="number">  
</template>  

🔔 核心要点

  • ref 处理基本类型,用.value访问
  • reactive 处理对象/数组,可直接修改属性
  • 优先使用 watchEffect 自动追踪依赖

2. 组件通信の六脉神剑

🍙 Props/Emits(父子传值)

<!-- 父组件 -->  
<Child :title="msg" @update="handleUpdate" />  

<!-- 子组件 -->  
<script setup>  
defineProps(['title']);  
const emit = defineEmits(['update']);  

const send = () => {  
  emit('update', '新消息');  
}  
</script>  

🍱 Provide/Inject(跨层传递)

// 祖先组件  
provide('theme', { color: 'red' });  

// 后代组件  
const theme = inject('theme', { color: 'blue' }); // 默认值  

🍔 模板引用(直接操作)

<ChildComponent ref="childRef" />  

<script setup>  
import { ref } from 'vue';  
const childRef = ref(null);  

// 调用子组件方法  
childRef.value.someMethod();  
</script>  

3. 性能优化小烧烤
<!-- 🚀 静态内容缓存 -->  
<div v-once>{{ neverChangeText }}</div>  

<!-- 🎯 虚拟滚动优化 -->  
<RecycleScroller  
  :items="bigList"  
  :item-size="50"  
  key-field="id"  
>  
  <template #default="{ item }">  
    <div>{{ item.content }}</div>  
  </template>  
</RecycleScroller>  

<!-- 🔥 组件持久化 -->  
<KeepAlive include="TabComponent">  
  <component :is="currentComponent" />  
</KeepAlive>  

❄️ 冷知识:Vue 3 魔法特性

// 🪄 动态CSS绑定  
const color = ref('red');  
<style scoped>  
.text {  
  color: v-bind(color);  
}  
</style>  

// 🧩 自动导入组件  
// vite.config.js  
import Components from 'unplugin-vue-components/vite';  
export default {  
  plugins: [  
    Components({ /* 自动识别components目录 */ }),  
  ]  
}  

🌟 实验室魔法厨房

实现智能搜索组件

<template>  
  <input v-model="keyword" @input="search" />  
  <div v-if="loading">🌀 加载中...</div>  
  <ul v-else>  
    <li v-for="item in results" :key="item.id">  
      {{ item.name }}  
    </li>  
  </ul>  
</template>  

<script setup>  
import { ref, watchDebounced } from '@vueuse/core';  

const keyword = ref('');  
const results = ref([]);  
const loading = ref(false);  

watchDebounced(keyword, async (val) => {  
  if (!val.trim()) return;  
  loading.value = true;  
  results.value = await fetchResults(val);  
  loading.value = false;  
}, { debounce: 300 });  
</script>  

明日秘技:《Vue 3 性能调优の火焰掌——内存泄漏排查指南》 🔥
(留言告诉我你遇到的Vue奇葩问题,本厨神在线诊断!💻)


🛎️ 本日避坑指南

  1. v-if 与 v-for 的优先级
<!-- ❌ 错误用法 -->  
<li v-for="item in list" v-if="item.visible"></li>  

<!-- ✅ 正确姿势 -->  
<template v-for="item in list">  
  <li v-if="item.visible" :key="item.id"></li>  
</template>  
  1. 响应式丢失问题
// ❌ 解构会丢失响应性  
const { x, y } = reactive({ x: 1, y: 2 });  

// ✅ 使用toRefs保持响应  
const { x, y } = toRefs(reactiveObj);  
  1. 事件内存泄漏
onMounted(() => {  
  window.addEventListener('resize', handleResize);  
});  

// 🚨 必须清理!  
onUnmounted(() => {  
  window.removeEventListener('resize', handleResize);  
});  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2313401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何将本地已有的仓库上传到gitee (使用UGit)

1、登录Gitee。 2、点击个人头像旁边的加号&#xff0c;选择新建仓库&#xff1a; 3、填写仓库相关信息 4、复制Gitee仓库的地址 5、绑定我们的本地仓库与远程仓库 6、将本地仓库发布&#xff08;推送&#xff09;到远程仓库&#xff1a; 注意到此处报错&#xff…

Day04 模拟原生开发app过程 Androidstudio+逍遥模拟器

1、用Androidstudio打开已经写好了的music项目 2、逍遥模拟器打开apk后缀文件 3、在源文件搜索关键字 以后的测试中做资产收集

若依ry-vue分离板(完整版)前后端部署

目录 1.目标 2.准备工作 3.源码下载 4.整理前后端目录 5.先部署后端 &#xff08;1&#xff09;导入数据库 &#xff08;2&#xff09;改代码数据库配置 &#xff08;3&#xff09;运行redis &#xff08;4&#xff09;运行执行文件 &#xff08;5&#xff09;后端启…

【YOLOv8】YOLOv8改进系列(5)----替换主干网络之EfficientFormerV2

主页&#xff1a;HABUO&#x1f341;主页&#xff1a;HABUO &#x1f341;YOLOv8入门改进专栏&#x1f341; &#x1f341;如果再也不能见到你&#xff0c;祝你早安&#xff0c;午安&#xff0c;晚安&#x1f341; 【YOLOv8改进系列】&#xff1a; 【YOLOv8】YOLOv8结构解读…

北大一二三四版全套DeepSeek教学资料

DeepSeek学习资料合集&#xff1a;https://pan.quark.cn/s/bb6ebf0e9b4d DeepSeek实操变现指南&#xff1a;https://pan.quark.cn/s/76328991eaa2 你是否渴望深入探索人工智能的前沿领域&#xff1f;是否在寻找一份能引领你从理论到实践&#xff0c;全面掌握AI核心技术的学习…

【大模型】WPS 接入 DeepSeek-R1详解,打造全能AI办公助手

目录 一、前言 二、WPS接入AI工具优势​​​​​​​ 三、WPS接入AI工具两种方式 3.1 手动配置的方式 3.2 Office AI助手 四、WPS手动配置方式接入AI大模型 4.1 安装VBA插件 4.1.1 下载VBA插件并安装 4.2 配置WPS 4.3 WPS集成VB 4.4 AI助手效果测试 4.5 配置模板文…

STM32步进电机驱动全解析(上) | 零基础入门STM32第五十七步

主题内容教学目的/扩展视频步进电机电路原理&#xff0c;跳线设置&#xff0c;驱动程序&#xff0c;调用控制。熟悉驱动程序&#xff0c;能调用控制。 师从洋桃电子&#xff0c;杜洋老师 &#x1f4d1;文章目录 一、步进电机核心原理图解二、核心特性与优势三、关键驱动方式对比…

[NewStarCTF 2023 公开赛道]ez_sql1 【sqlmap使用/大小写绕过】

题目&#xff1a; 发现id处可以sql注入&#xff1a; 虽然输入id1;show databases;#没什么回显&#xff0c;但是知道这里是字符型注入了 这次利用sqlmap注入 --dbs&#xff1a;列出所有数据库名字 python .\sqlmap.py -u http://a40b2f0a-823f-4c99-b43c-08b94ed0abb2.node5.…

新能源汽车充电综合解决方案:安科瑞电气助力绿色出行

安科瑞 华楠 18706163979 随着新能源汽车的迅猛发展&#xff0c;充电基础设施的建设成为了推动行业进步的关键。然而&#xff0c;充电技术滞后、运营效率低下、车桩比失衡等问题&#xff0c;依然困扰着广大车主和运营商。今天&#xff0c;我们要为大家介绍一款新能源汽车充电…

蓝桥杯java-B组真题—动态规划

目录 一.什么是动态规划? 二.题目 第一种情况:集合本身之和为奇数 第二种情况:集合本身之和为偶数 下面是代码实现: 一.什么是动态规划? 这里就简单的解释一下&#xff0c;动态规划就是记录之前的计算结果&#xff0c;避免重复的计算之前已经计算过的结果&#xff0c;用…

网易邮箱如何用大数据任务调度实现海量邮件数据处理?Apache DolphinScheduler用户交流会上来揭秘!

你是否对大数据领域的前沿应用充满好奇&#xff1f;网易邮箱作为互联网大厂网易的重要业务线&#xff0c;在大数据应用方面有着诸多值得借鉴的实践经验。你是否渴望深入了解网易邮箱如何借助 Apache DolphinScheduler 实现海量邮件数据处理、用户行为分析、实时监控等核心业务场…

前端知识点---路由模式-实例模式和单例模式(ts)

在 ArkTS&#xff08;Ark UI 框架&#xff09;中&#xff0c;路由实例模式&#xff08;Standard Instance Mode&#xff09;主要用于管理页面跳转。当创建一个新页面时&#xff0c;可以选择标准实例模式&#xff08;Standard Mode&#xff09;或单实例模式&#xff08;Single M…

固定表头、首列 —— uniapp、vue 项目

项目实地&#xff1a;也可以在 【微信小程序】搜索体验&#xff1a;xny.handbook 另一个体验项目&#xff1a;官网 一、效果展示 二、代码展示 &#xff08;1&#xff09;html 部分 <view class"table"><view class"tr"><view class&quo…

langchain系列(九)- LangGraph 子图详解

目录 一、导读 二、原理说明 1、简介 2、子图图示 3、使用说明 三、基础代码实现 1、实现功能 2、Graph 图示 3、代码实现 4、输出 5、分析 四、人机交互 1、实现中断 2、历史状态&#xff08;父图&#xff09; 3、历史状态&#xff08;子图&#xff09; 4、历史…

搜索引擎是如何理解你的查询并提供精准结果的?

目录 一、搜索引擎简单介绍 二、搜索引擎整体架构和工作过程 &#xff08;一&#xff09;整体分析 &#xff08;二&#xff09;爬虫系统 三个基本点 爬虫系统的工作流程 关键考虑因素和挑战 &#xff08;三&#xff09;索引系统 网页处理阶段 预处理阶段 反作弊分析…

IDEA软件安装环境配置中文插件

一、Java环境配置 1. JDK安装8 访问Oracle官网下载JDK8&#xff08;推荐JDK8&#xff0c;11&#xff09;Java Downloads | Oracle 双击安装程序&#xff0c;保持默认设置连续点击"下一步"完成安装 验证JDK安装&#xff0c;winR键 然后输入cmd&#xff0c;输入java…

循环神经网络(RNN):时序建模的核心引擎与演进之路

在人工智能处理序列数据的战场上&#xff0c;循环神经网络&#xff08;RNN&#xff09;如同一个能够理解时间的智者。从 2015 年谷歌神经机器翻译系统颠覆传统方法&#xff0c;到 2023 年 ChatGPT 实现对话连续性&#xff0c;这些突破都植根于 RNN 对时序建模的深刻理解。本文将…

电脑总显示串口正在被占用处理方法

1.现象 在嵌入式开发过程中&#xff0c;有很多情况下要使用串口调试&#xff0c;其中485/422/232转usb串口是非常常见的做法。 根据协议&#xff0c;接口芯片不同&#xff0c;需要安装对应的驱动程序&#xff0c;比如ch340&#xff0c;cp2102&#xff0c;CDM212364等驱动。可…

R语言和RStudio安装

整体还是比较简单的&#xff0c;主要是记录个流程。 官方镜像站列表R语言官网 1 安装R&#xff08;2025/3/6&#xff09; R语言官网&#xff1a;The R Project for Statistical Computing 打开之后就Hello world一下吧 配置环境变量 2 安装RStudio 下载地址&#xff1a;htt…

【C#学习笔记02】基本元素与数据类型

引言 深入了解C语言的基本元素、计算机存储器结构、常量与变量的概念以及数据类型。这些内容是C语言编程的基础&#xff0c;掌握它们对于编写高效、可靠的嵌入式程序至关重要。 1.C语言的基本元素 ​编程语言的发展离不开自然语言&#xff0c;所以编程语言的语法和词汇也是由…