Vue3 <script setup lang=“ts“> 的基本使用

Vue3提供了一种名为 <script setup> 的语法糖,它可以让我们更加便捷地编写Vue组件。在加上 lang="ts" 后可以通过TypeScript来书写Vue3组件,提高代码的可读性和类型安全性。

首先,让我们创建一个Vue3组件,该组件可以在页面上显示一个计数器,并且能够点击按钮对其进行累加操作。

<template>
  <div>
    <h1>Counter: {{ counter }}</h1>
    <button @click="increment">Increment</button>
  </div>
</template>

在Vue3的新增语法糖 <script setup> 中,我们可以通过以下方式来编写样式代码:

<script setup lang="ts">
import { ref } from 'vue'

const counter = ref(0)

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

在上面的代码中,我们引入了 Vue 的 ref 函数来定义一个计数器。ref 总是返回一个对象,这个对象包含了一个名为 value 的响应式属性,通过 counter.value 累加来更新计数器的值。在 increment 函数中,我们只需要让 counter 加一就可以了。

除了简化代码之外,<script setup> 还可以提供更严格的类型检查和错误提示,以及更友好的错误提示信息。

接下来,让我们再来看一下一个更复杂的例子。这次我们来创建一个 TodoList 组件,它可以添加和删除任务,并能够显示所有任务列表的待做和已完成情况。

<template>
  <div>
    <h1>Todos:</h1>
    <ul>
      <li v-for="(todo, index) in todos" :key="index">
        <span :class="todo.completed ? 'completed' : ''"
          >{{ todo.text }}</span
        >
        <button @click="complete(todo)">Complete</button>
        <button @click="remove(todo)">Delete</button>
      </li>
    </ul>

    <form @submit.prevent="add">
      <input type="text" v-model="text" />
      <button type="submit">Add</button>
    </form>
  </div>
</template>

<script setup> 中,我们可以使用以下代码编写逻辑代码:

<script setup lang="ts">
import { ref } from 'vue'

interface Todo {
  text: string
  completed: boolean
}

const todos = ref<Todo[]>([])
const text = ref('')

const add = () => {
  todos.value.push({
    text: text.value,
    completed: false
  })
  text.value = ''
}

const complete = (todo: Todo) => {
  todo.completed = true
}

const remove = (todo: Todo) => {
  const index = todos.value.indexOf(todo)
  todos.value.splice(index, 1)
}
</script>

在上面的代码中,我们使用 TypeScript 来定义了一个 Todo 接口,并使用了 ref 函数来定义了 todostext 响应式数据。在 add 函数中,我们使用 push 方法向 todos 数组中加入一个新的任务,并将 text 清空,实现了增加任务的操作。在 complete 函数中,我们将待做任务标记为已完成,实现了完成任务的操作。在 remove 函数中,我们使用 indexOf 方法来查找待删除任务在数组中的索引,并借助 splice 方法从数组中将其删除,实现了删除任务的操作。

至此,我们已经了解了 Vue3 新增的 <script setup> 语法糖,并通过两个示例介绍了其基本使用。通过使用 <script setup>,我们可以更加便捷地编写 Vue3 组件,并提高代码的可读性和可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue3 <script setup lang=“ts“> 的基本使用 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • element中el-autocomplete的常见用法示例

    当使用 Vue.js 和 Element UI 搭建网站时,使用 el-autocomplete 组件可以实现一个自动完成的输入框。以下是 el-autocomplete 的常见用法示例: 基本用法 使用 v-model 在父组件中绑定输入框的值,使用 fetchSuggestions 方法获取自动完成的选项列表: <template> <…

    Vue 2023年5月28日
    00
  • vue webpack打包优化操作技巧

    下面是关于Vue Webpack打包优化的完整攻略。 为什么需要打包优化? Vue Webpack打包过程通常比较复杂,对于大型项目而言,打包过程中可能会遇到各种各样的问题。我们需要对Webpack打包进行优化,以提高项目的性能和稳定性。通常需要考虑以下几个方面: 减少打包体积 减少打包时间 提高页面加载速度 稳定可靠性 打包优化操作技巧 1. 优化load…

    Vue 2023年5月28日
    00
  • 如何构建 vue-ssr 项目的方法步骤

    如何构建 Vue SSR 项目的方法步骤 Vue SSR,即 Vue.js 服务器端渲染,能够提高网站的首屏渲染速度,对于 SEO 也有很大的帮助。下面是构建 Vue SSR 项目的完整攻略: 安装依赖和插件 首先需要在项目中安装 vue-server-renderer,命令如下: npm install vue-server-renderer –save…

    Vue 2023年5月27日
    00
  • 想到头秃也想不到的Vue3复用组件还可以这么hack的用法

    当我们在开发Vue应用时,需要多次使用同样的组件,此时我们可以使用组件复用来简化代码并提高开发效率。Vue3提供了更为灵活的组件复用方式,下面就是Vue3复用组件的hack用法攻略。 局部注册组件 我们可以在Vue模板中使用局部注册组件的方式来重复使用同一个组件,这种方式只有在当前组件内部可用。 <template> <div> &l…

    Vue 2023年5月28日
    00
  • Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义

    下面给你详细讲解一下怎样使用Vue、Element UI和vue-quill-editor富文本编辑器实现插入图片自定义功能。 环境与依赖 首先,我们需要创建一个Vue项目,在命令行中输入以下命令: vue create my-project 然后,进入到项目目录下,安装以下依赖: npm install element-ui vue-quill-edito…

    Vue 2023年5月28日
    00
  • Vue中金额、日期格式化插件@formatjs/intl的使用及说明

    Vue中金额、日期格式化插件@formatjs/intl的使用及说明 简介 @formatjs/intl 是一个用于处理数字、日期、货币等多种格式化需求的插件。可以在 Vue 中方便地使用它来对各种格式进行处理。 安装 在项目中安装@formatjs/intl: npm install @formatjs/intl 同时,需要安装@formatjs/intl…

    Vue 2023年5月27日
    00
  • vue下axios拦截器token刷新机制的实例代码

    下面我将为您讲解“Vue下Axios拦截器Token刷新机制的实例代码”的完整攻略,包括以下几个方面: 什么是拦截器 在使用axios发起请求时,我们可以使用拦截器对请求进行拦截、修改,以及对响应进行拦截、统一处理等操作。而在vue项目中,我们常使用axios拦截器实现Token的自动刷新机制。 实现Token的自动刷新机制 具体实现步骤如下: (1) 在m…

    Vue 2023年5月28日
    00
  • 详解用webpack2.0构建vue2.0超详细精简版

    下面是详解“用webpack2.0构建vue2.0超详细精简版”的完整攻略。 一、安装依赖 在开始构建项目前,我们需要先安装相关依赖,执行以下命令: npm i webpack webpack-dev-server vue vue-loader vue-template-compiler css-loader style-loader file-loader…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部