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日

相关文章

  • Nuxt.js实现一个SSR的前端博客的示例代码

    下面就是“Nuxt.js实现一个SSR的前端博客的完整攻略”。 Nuxt.js简介 Nuxt.js 是一个基于 Vue.js 的通用应用框架,它可以帮助我们快速搭建一个 Vue.js 应用(如 SPA、SSR、静态 生成),并且还提供了自动化的构建和部署功能。 步骤 1. 创建项目 首先,我们需要安装 Node.js 和 Npm。然后,我们可以使用 Npm …

    Vue 2023年5月28日
    00
  • vue项目首屏加载时间优化实战

    下面是详细讲解“vue项目首屏加载时间优化实战”的完整攻略: 1. 确认当前项目的首屏加载时间 在进行优化之前,我们需要明确当前项目的首屏加载时间,可以通过Chrome浏览器自带的Performance面板来进行测试和分析。具体步骤如下: 打开Chrome浏览器,进入要测试的网站。 按下F12键,打开开发者工具。 点击Performance面板,点击页面re…

    Vue 2023年5月29日
    00
  • vue-cli3.X快速创建项目的方法步骤

    Vue CLI 是 Vue.js 官方提供的一个脚手架工具,它可以帮助我们快速搭建一个 vue 项目,同时提供了很多优秀的插件,比如 vue-router、vuex 等。本文将介绍使用 Vue CLI 3.X 创建项目的详细步骤。 安装 Vue CLI 3.X 首先我们需要安装 Vue CLI 3.X,安装命令如下: npm install -g @vue/…

    Vue 2023年5月27日
    00
  • vue中 数字相加为字串转化为数值的例子

    在 Vue 中,有时候我们需要将一个字符串类型的数字转换为数字类型,这时候我们可以使用 + 运算符,将字符串类型的数字转换为数字类型。下面是一个将字符串类型的数字相加运算后,将结果转换为数字类型的例子: <template> <div> <input type="text" v-model="num…

    Vue 2023年5月27日
    00
  • 关于单文件组件.vue的使用

    当我们使用Vue.js框架进行Web开发时,单文件组件(.vue)是Vue的一项非常重要的功能。它可以让我们更好地组织我们的代码,使得代码更整洁,更易于管理。下面是单文件组件的使用攻略: 什么是单文件组件.vue? 单文件组件是Vue.js框架提供的一种将HTML、CSS以及JavaScript代码整合在一个文件中的组件化方案。一个.vue文件中包含了三个部…

    Vue 2023年5月28日
    00
  • vue父组件向子组件传递多个数据的实例

    下面是详细的讲解“Vue父子组件之间传递多个数据”的攻略。 1. 父组件向子组件传递多个数据的方式 在Vue中,父组件向子组件传递数据有以下几种方式: 1.1 父组件通过属性props向子组件传递数据 这是最常见的一种方式。 在父组件中声明props,在子组件中通过props定义需要接收的数据,然后就可以通过props传递数据。 父组件中的代码示例: &lt…

    Vue 2023年5月27日
    00
  • vue3+vite使用环境变量.env的一些配置情况详细说明

    下面是关于”vue3+vite使用环境变量.env的一些配置情况详细说明”的完整攻略。 简介 在Vue3和Vite开发环境中,使用环境变量可助力于管理不同的配置文件,例如本地开发环境、生产环境等。 当我们需要在不同的环境中配置不同的API地址、配置信息等时,使用环境变量便能够让我们的代码变得更加灵活通用。在这里,我们将详细说明如何在Vue3+Vite项目中使…

    Vue 2023年5月28日
    00
  • 解决vue.js 数据渲染成功仍报错的问题

    针对“解决vue.js数据渲染成功仍报错的问题”的完整攻略,可以分为以下几个步骤: 1. 确认报错信息 当出现报错信息的时候,首先需要确认具体的报错信息。不同的报错信息可能有不同的原因和解决方法。常见的一些报错信息包括: cannot read property ‘xxx’ of undefined Cannot read property ‘$emit’ …

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