Vue3:使用setup实现组合式开发

一、情景说明

首先,我们应该知道,Vue3中,可以用Vue2的语法,进行配置式开发。

在这里,我们用Vue3的新语法,实现组合式开发

二、案例

1、组件中使用setup代替Vue2中的data、methodsvc配置项
关键配置:script 标签中的 setup

<script lang="ts" setup name="Person">
    // 数据,原来是写在data中的,此时的name、age、tel都不是响应式的数据
    let name = '张三'
    let age = 18
    let tel = '13888888888'
    let address = '北京昌平区宏福苑·宏福科技园'

    // 方法
    function changeName() {
        name = 'zhang-san' //注意:这样修改name,页面是没有变化的
        console.log(name) //name确实改了,但name不是响应式的
    }
    function changeAge() {
        age += 1 //注意:这样修改age,页面是没有变化的
        console.log(age) //age确实改了,但age不是响应式的
    }
    function showTel() {
        alert(tel)
    }
</script>

2、组件名简化
以往在Vue2中,组件名是写在vc实例的name配置项的
这里,用vite-plugin-vue-setup-extend插件,在Vue3中直接去掉vc实例的配置编写工作

安装插件:

npm i vite-plugin-vue-setup-extend

使用插件:
vite.config.ts配置文件中
关键配置:
import VueSetupExtend from 'vite-plugin-vue-setup-extend'
VueSetupExtend()

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import VueSetupExtend from 'vite-plugin-vue-setup-extend'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    VueSetupExtend()
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})

组件名的新写法∶
直接在配置了setupscript标签中,配置name="Person"

经过以上配置,我们,就可以在配置了setup的script标签中,愉快的写Vue3的代码了!

注意∶
Vue3中的setup区域,不能使用this!!!

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Vue3组合式API实现代办事项程序的示例代码: ```html <template> <div> <h2>Todo List</h2> <form @submit.prevent="addTodo"> <input type="text" v-model="newTodo" placeholder="Add a new todo"> <button>Add</button> </form> <ul> <li v-for="(todo, index) in todos" :key="index"> <input type="checkbox" v-model="todo.completed"> <span :class="{ completed: todo.completed }">{{ todo.text }}</span> <button @click="removeTodo(index)">Remove</button> </li> </ul> </div> </template> <script> import { reactive, computed } from 'vue' export default { setup() { const state = reactive({ todos: [ { text: 'Learn Vue 3', completed: false }, { text: 'Build a todo app', completed: false }, { text: 'Learn Composition API', completed: false } ], newTodo: '' }) const addTodo = () => { if (state.newTodo.trim() !== '') { state.todos.push({ text: state.newTodo, completed: false }) state.newTodo = '' } } const removeTodo = index => { state.todos.splice(index, 1) } const completedTodos = computed(() => { return state.todos.filter(todo => todo.completed) }) return { state, addTodo, removeTodo, completedTodos } } } </script> <style> .completed { text-decoration: line-through; } </style> ``` 在这个示例中,我们使用Vue3的组合式API来实现代办事项程序。我们使用了`reactive`函数来创建一个响应式的状态对象,其中包含了一个`todos`数组和一个`newTodo`字符串。我们还使用了`computed`函数来计算已完成的任务数量。我们在`setup`函数中定义了`addTodo`和`removeTodo`方法来添加和删除任务。最后,我们将这些方法和状态对象暴露给模板,以便在模板中使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值