当前位置:首页 > VUE

用VUE3实现

2026-01-22 18:23:25VUE

以下是使用 Vue 3 实现常见功能的代码示例和说明,采用 Composition API 风格:

基础组件结构

<template>
  <div>
    <h1>{{ title }}</h1>
    <button @click="increment">Count: {{ count }}</button>
  </div>
</template>

<script setup>
import { ref } from 'vue'

const title = ref('Vue 3 Demo')
const count = ref(0)

const increment = () => {
  count.value++
}
</script>

响应式数据管理

import { reactive, computed } from 'vue'

const state = reactive({
  items: [],
  filter: ''
})

const filteredItems = computed(() => {
  return state.items.filter(item => 
    item.name.includes(state.filter)
  )
})

生命周期钩子

import { onMounted, onUnmounted } from 'vue'

onMounted(() => {
  console.log('组件已挂载')
  window.addEventListener('resize', handleResize)
})

onUnmounted(() => {
  window.removeEventListener('resize', handleResize)
})

组件通信

父组件:

<template>
  <ChildComponent 
    :message="parentMessage"
    @update="handleUpdate"
  />
</template>

<script setup>
import ChildComponent from './ChildComponent.vue'

const parentMessage = ref('Hello from parent')

const handleUpdate = (newValue) => {
  console.log('Received:', newValue)
}
</script>

子组件:

<template>
  <div>
    <p>{{ message }}</p>
    <button @click="emitUpdate">Send</button>
  </div>
</template>

<script setup>
const props = defineProps({
  message: String
})

const emit = defineEmits(['update'])

const emitUpdate = () => {
  emit('update', 'New value from child')
}
</script>

状态管理(Pinia)

安装Pinia:

npm install pinia

创建store:

// stores/counter.js
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
  state: () => ({ count: 0 }),
  actions: {
    increment() {
      this.count++
    }
  }
})

组件中使用:

import { useCounterStore } from '@/stores/counter'

const counter = useCounterStore()

// 读取状态
console.log(counter.count)

// 调用action
counter.increment()

路由管理

安装Vue Router:

npm install vue-router@4

路由配置:

import { createRouter, createWebHistory } from 'vue-router'

const router = createRouter({
  history: createWebHistory(),
  routes: [
    { path: '/', component: Home },
    { path: '/about', component: About }
  ]
})

组件中使用:

import { useRoute, useRouter } from 'vue-router'

const route = useRoute()
const router = useRouter()

// 获取当前路由参数
console.log(route.params)

// 导航跳转
router.push('/about')

异步请求

使用axios示例:

import { ref } from 'vue'
import axios from 'axios'

const data = ref(null)
const loading = ref(false)
const error = ref(null)

const fetchData = async () => {
  loading.value = true
  try {
    const response = await axios.get('https://api.example.com/data')
    data.value = response.data
  } catch (err) {
    error.value = err
  } finally {
    loading.value = false
  }
}

// 调用
fetchData()

组合式函数封装

封装鼠标位置跟踪:

// composables/useMouse.js
import { ref, onMounted, onUnmounted } from 'vue'

export function useMouse() {
  const x = ref(0)
  const y = ref(0)

  const update = (e) => {
    x.value = e.pageX
    y.value = e.pageY
  }

  onMounted(() => window.addEventListener('mousemove', update))
  onUnmounted(() => window.removeEventListener('mousemove', update))

  return { x, y }
}

组件中使用:

import { useMouse } from '@/composables/useMouse'

const { x, y } = useMouse()

这些示例涵盖了Vue 3的核心功能,包括响应式系统、组件通信、状态管理、路由和实用工具封装。根据具体需求可进一步扩展和组合这些模式。

用VUE3实现

分享给朋友:

相关文章

vue实现查询替换

vue实现查询替换

Vue 实现查询替换功能 在 Vue 中实现查询替换功能,可以通过数据绑定和字符串操作方法结合实现。以下是具体实现方式: 基础实现 <template> <div>…

vue实现防抖节流

vue实现防抖节流

Vue 中实现防抖(Debounce) 防抖的核心是延迟执行函数,在连续触发时取消前一次的调用,只执行最后一次。适用于输入框搜索、窗口大小调整等场景。 方法1:使用 Lodash 的 _.debou…

vue实现自定义登录

vue实现自定义登录

实现自定义登录的基本步骤 在Vue中实现自定义登录功能通常需要结合前端和后端技术。以下是一个基本的实现流程: 创建登录表单组件 使用Vue的单文件组件创建一个登录表单,包含用户名和密码输入框以及提交…

vue怎么实现潜艇下潜

vue怎么实现潜艇下潜

Vue实现潜艇下潜动画效果 使用Vue结合CSS动画或JavaScript动画库实现潜艇下潜效果,可通过以下方式完成: 基础CSS动画实现 通过Vue的v-bind:style或v-bind:cla…

vue懒加载实现难吗

vue懒加载实现难吗

vue懒加载的实现难度 Vue懒加载的实现并不复杂,核心逻辑是通过动态导入(Dynamic Imports)和路由配置或组件异步加载完成。以下是具体实现方法: 路由懒加载实现 在Vue Router…

实现vue

实现vue

安装Vue.js 通过npm安装Vue.js是最常见的方式。确保已安装Node.js和npm,运行以下命令: npm install vue 或者使用CDN直接引入: <script src…