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

Vue3的简单学习

一、创建应用(createApp)

Vue3 中通过 createApp 函数创建应用实例,替代了 Vue2 的 new Vue()

知识点

  • createApp(App) 创建应用实例,mount('#app') 挂载到 DOM。
  • 应用实例可链式调用配置(如全局组件、指令等)。

例子

<!-- index.html -->
<div id="app"></div><!-- main.js -->
import { createApp } from 'vue'
import App from './App.vue'// 创建应用并挂载
createApp(App).mount('#app')

二、Composition API(核心)

Vue3 新增的 Composition API 允许按逻辑功能组织代码(而非 Vue2 的 Options API 按选项分类),核心包括 setuprefreactive 等。

1. setup 函数(或 <script setup> 语法糖)

知识点

  • 组件的入口点,用于编写组合式逻辑。
  • <script setup> 是简化写法(推荐),变量 / 函数无需显式返回即可在模板中使用。

例子<script setup> 语法糖):

<template><p>计数:{{ count }}</p><button @click="add">+1</button>
</template><script setup>
// 直接定义变量和函数,无需 return
const count = 0  // 注意:普通变量不响应式,需用 ref/reactive
const add = () => { count++ }  // 这里仅演示语法,实际需用响应式API
</script>
2. 响应式 API:ref 和 reactive

知识点

  • ref:用于包装基本类型(Number、String 等)为响应式数据,通过 .value 访问 / 修改值。
  • reactive:用于包装对象 / 数组为响应式数据,直接通过属性访问 / 修改。

例子

<template><div><p>年龄:{{ age }}</p>  <!-- 模板中无需 .value --><p>姓名:{{ user.name }}</p><button @click="change">修改</button></div>
</template><script setup>
import { ref, reactive } from 'vue'// 基本类型用 ref
const age = ref(18)  // 响应式包装
// 对象用 reactive
const user = reactive({ name: '张三', age: 18 })const change = () => {age.value = 20  // 脚本中需 .valueuser.name = '李四'  // 直接修改属性
}
</script>
3. 计算属性(computed

知识点

  • 基于响应式数据生成衍生数据,自动缓存,依赖变化时重新计算。

例子

<template><p>原价:{{ price }}</p><p>折扣价:{{ discountedPrice }}</p>
</template><script setup>
import { ref, computed } from 'vue'const price = ref(100)
// 计算属性:9折后的价格
const discountedPrice = computed(() => {return price.value * 0.9
})
</script>
4. 监听器(watch 和 watchEffect

知识点

  • watch:显式指定监听的数据源(ref/reactive/ 计算属性),触发时执行回调。
  • watchEffect:自动追踪依赖,依赖变化时执行回调(无需显式指定监听源)。

例子

<template><input v-model="name" placeholder="输入姓名">
</template><script setup>
import { ref, watch, watchEffect } from 'vue'const name = ref('')// watch:监听 name 变化
watch(name, (newVal, oldVal) => {console.log(`姓名从 ${oldVal} 变成了 ${newVal}`)
})// watchEffect:自动追踪 name,变化时执行
watchEffect(() => {console.log(`当前姓名:${name.value}`)  // 用到了 name,自动监听
})
</script>

三、生命周期钩子

Vue3 中生命周期钩子通过组合式 API 函数调用(替代 Vue2 的 Options 中的 mounted 等),需从 vue 导入。

常用钩子及例子

钩子函数说明Vue2 对应选项
onMounted组件挂载后执行mounted
onUpdated组件更新后执行updated
onUnmounted组件卸载后执行beforeDestroy

例子

<template><p>{{ message }}</p>
</template><script setup>
import { ref, onMounted, onUnmounted } from 'vue'const message = ref('')// 组件挂载后获取数据
onMounted(() => {message.value = '组件挂载完成!'console.log('组件已挂载')
})// 组件卸载时清理
onUnmounted(() => {console.log('组件已卸载,清理资源')
})
</script>

四、组件通信

1. 父传子(props

知识点

  • 父组件通过属性传递数据,子组件通过 defineProps 声明接收(<script setup> 中直接使用)。

例子

<!-- 子组件 Child.vue -->
<template><p>父组件传来的标题:{{ title }}</p>
</template><script setup>
// 声明接收的 props(可指定类型)
const props = defineProps({title: {type: String,required: true}
})
</script><!-- 父组件 Parent.vue -->
<template><Child title="我是父组件的标题" />
</template><script setup>
import Child from './Child.vue'
</script>
2. 子传父(emits

知识点

  • 子组件通过 emit 触发事件,父组件通过 v-on 监听,子组件需用 defineEmits 声明事件。

例子

<!-- 子组件 Child.vue -->
<template><button @click="sendMsg">向父组件传值</button>
</template><script setup>
// 声明可触发的事件
const emit = defineEmits(['send'])const sendMsg = () => {emit('send', '我是子组件的数据')  // 触发事件并传参
}
</script><!-- 父组件 Parent.vue -->
<template><Child @send="handleReceive" />
</template><script setup>
const handleReceive = (msg) => {console.log('收到子组件消息:', msg)  // 输出:我是子组件的数据
}
</script>
http://www.lryc.cn/news/615361.html

相关文章:

  • Vuex 数据共享
  • JVM常用参数有哪些?
  • 06.【数据结构-C语言】队列(先进先出,队列实现:入队列、出队列、获取队头or队尾元素,队列实现代码,队列相关题目)
  • idea设置注释--带日期和作者和描述
  • 排序概念以及插入排序
  • Oracle字段操作
  • (nice!!!)(LeetCode 面试经典 150 题) 146. LRU 缓存 (哈希表+双向链表)
  • 在 Vue 中动态引入SVG图标的实现方案
  • STM32 外设驱动模块四:光敏电阻(LDR) 模块
  • 後端開發技術教學(四) 數據交互延伸
  • 2025年渗透测试面试题总结-09(题目+回答)
  • 力扣(轮转数组)
  • 欧拉公式的意义
  • gpt-oss 全量技术解读
  • AI鉴伪技术:守护数字时代的真实性防线
  • 数学学习 | 高数、线代、概率论及数理统计荐书
  • 【C++】set
  • AI热点周报(8.3~8.9):OpenAI重返开源,Anthropic放大招,Claude4.1、GPT5相继发布
  • 第二十八天(cookiesessiontokeny验证)
  • 李宏毅深度学习教程 第16-18章 终身学习+网络压缩+可解释性人工智能
  • STM32学习笔记6-TIM-2输出比较功能
  • 《汇编语言:基于X86处理器》第12章 复习题和练习
  • [每周一更]-(第155期):深入Go反射机制:架构师视角下的动态力量与工程智慧
  • 元宇宙技术如何改变社交方式?
  • (第三篇)spring cloud之Zookeeper注册中心
  • Go 实用指南:如何执行 Skyline 查询(Pareto 最优点筛选)
  • 图片拆分工具,自定义宫格切割
  • 在Spring Boot项目中如何动态切换数据源、数据库?
  • java -jar xxx.jar 提示xxx.jar中没有主清单属性报错解决方案
  • 【Git】Visual Studio 实现合并分支