深度了解vue.js中hooks的相关知识

yizhihongxing

深度了解vue.js中hooks的相关知识

什么是hooks?

Vue 3.0 采用了 Composition API,这是一种基于函数的API,包含了许多新的hooks(钩子函数),例如 setup()onMounted()onBeforeUnmount() 等。这些新的钩子函数不仅可以让我们更加方便地组合逻辑,还可以提高代码的可读性和可复用性。

基本用法

setup()

setup() 函数是一个新的函数式组件API的入口。它在组件实例创建前执行,它可以返回一个对象,包含组件需要的数据、方法等内容。

示例代码:

<template>
  <div>
    {{ message }}
  </div>
</template>

<script>
import { ref, computed } from 'vue'

export default {
  setup() {
    const message = ref('Hello, world!')

    const reverseMessage = computed(() => {
      return message.value.split('').reverse().join('')
    })

    return {
      message,
      reverseMessage
    }
  }
}
</script>

在上面的示例中,我们先引入了 refcomputed,分别用于创建响应式的数据和计算属性。然后在 setup() 函数中创建了一个名为 message 的响应式数据和一个名为 reverseMessage 的计算属性,并将这两个属性都返回。这样,在模板中就可以通过 {{ message }}{{ reverseMessage }} 访问到这两个数据了。

onMounted()

onMounted() 函数会在组件挂载后立即调用,它可以用来执行一些异步操作,例如请求数据、初始化组件等。

示例代码:

<template>
  <div>
    <p v-if="loading">Loading...</p>
    <ul v-else>
      <li v-for="item in items">{{ item }}</li>
    </ul>
  </div>
</template>

<script>
import { ref, onMounted } from 'vue'

export default {
  setup() {
    const items = ref([])
    const loading = ref(true)

    onMounted(async () => {
      const res = await fetch('https://api.example.com/items')
      const data = await res.json()
      items.value = data
      loading.value = false
    })

    return {
      items,
      loading
    }
  }
}
</script>

在上面的示例中,我们先创建了两个响应式数据 itemsloading,其中 loading 的初始值为 true。然后在 onMounted() 中使用了 fetch() 来请求数据,并将请求到的数据赋值给了 items。最后,将 loading 的值改为 false。这样,在模板中就可以根据 loading 的值来显示加载中的文本或者展示数据列表了。

onBeforeUnmount()

onBeforeUnmount() 函数会在组件卸载前调用,它可以用来清理资源、取消订阅等操作。

示例代码:

<template>
  <div>
    <p>{{ count }}</p>
    <button @click="startTimer">Start Timer</button>
    <button @click="stopTimer">Stop Timer</button>
  </div>
</template>

<script>
import { ref, onBeforeUnmount } from 'vue'

export default {
  setup() {
    const count = ref(0)
    let intervalId

    const startTimer = () => {
      intervalId = setInterval(() => {
        count.value++
      }, 1000)
    }

    const stopTimer = () => {
      clearInterval(intervalId)
    }

    onBeforeUnmount(() => {
      clearInterval(intervalId)
    })

    return {
      count,
      startTimer,
      stopTimer
    }
  }
}
</script>

在上面的示例中,我们创建了一个名为 count 的响应式数据和两个方法 startTimerstopTimer,用于开始计时和停止计时。在 setup() 函数中,我们使用了 let 声明了一个变量 intervalId,用于保存定时器的 id。然后在 startTimer() 中调用了 setInterval() 来创建一个定时器,每隔一秒钟将 count 的值增加 1。在 stopTimer() 中调用了 clearInterval() 来停止定时器。最后,在 onBeforeUnmount() 中再次调用了 clearInterval() 来确保在组件卸载前停止了定时器。

总结

本篇文章介绍了 Vue 3.0 中的 Composition API 的基本用法,包括 setup()onMounted()onBeforeUnmount() 等钩子函数的使用,同时还给出了一些示例代码。希望这篇文章可以帮助你更好地理解 Vue 3.0 中的 Composition API,从而提高你的开发效率和代码质量。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深度了解vue.js中hooks的相关知识 - Python技术站

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

相关文章

  • Vue.js中v-for指令的用法介绍

    Vue.js中v-for指令的用法介绍 在Vue.js中,v-for指令用于在模板中循环渲染一个数组或对象的数据。它的基本语法如下: <div v-for="(item, index) in items" :key="index"> {{ index }} – {{ item }} </div>…

    Vue 2023年5月27日
    00
  • 使用vue实现计时器功能

    下面是使用Vue实现计时器功能的完整攻略: 1. 准备工作 首先需要在你的项目中引入Vue.js。这里提供两种引入Vue.js的方式: 在HTML页面中通过CDN引入Vue.js。在标签中添加以下代码: <script src="https://unpkg.com/vue"></script> 通过npm安装Vue…

    Vue 2023年5月28日
    00
  • vue-ajax小封装实例

    下面我将为您详细讲解”vue-ajax小封装实例”的完整攻略。 介绍 在Vue.js中,我们经常需要通过ajax向服务端请求数据或提交数据,而Vue.js并没有提供自带的ajax函数。因此,我们需要自己针对Vue.js进行封装ajax函数,以便能够在Vue.js中更好地使用ajax请求。 axios与vue-resource选择 目前,市面上流行的封装Aja…

    Vue 2023年5月28日
    00
  • vue中定义的data为什么是函数

    在Vue中定义data时,我们常常将其设置为一个函数。其原因是为了确保每个实例都拥有自己的data数据,而不是共享一个data对象。 具体来说,当我们使用对象来定义data时: data: { msg: ‘Hello World!’ } 我们可以通过以下代码来创建Vue实例: new Vue({ data: { msg: ‘Hello from instan…

    Vue 2023年5月28日
    00
  • vue.config.js常用配置详解

    当你在Vue项目中需要自定义Webpack的配置时,可以通过在项目根目录下创建vue.config.js文件来实现。Vue CLI读取该文件,并根据其中的配置修改Webpack的默认配置以满足你的需要。以下是对vue.config.js文件的常用配置的详细说明。 基本配置 以下是最简单的vue.config.js文件: module.exports = { …

    Vue 2023年5月27日
    00
  • mpvue全局引入sass文件的方法步骤

    下面我详细讲解在mpvue中全局引入sass文件的方法。 在mpvue中全局引入sass文件的方法步骤 步骤如下: 安装sass-loader和node-sass模块: npm i sass-loader node-sass -D 在 build/webpack.base.conf.js 中添加sass-loader配置: // build/webpack.…

    Vue 2023年5月28日
    00
  • Vue3响应式对象是如何实现的(2)

    首先需要提醒一下,这个题目是指“Vue3响应式对象是如何实现的”系列文章的第二篇,如果还没看过第一篇的话,建议先去看一下第一篇的内容。 Vue3的响应式系统在内部实现中使用了ES6的Proxy对象。下面我将从两个方面来详细介绍其中的细节。 Proxy的基本用法 Proxy是ES6的一个新特性,可以用来拦截对象的底层操作,比如读取属性、写入属性、删除属性等。它…

    Vue 2023年5月28日
    00
  • 一篇文章带你搞懂VUE基础知识

    一篇文章带你搞懂VUE基础知识攻略 简介 Vue.js 是一个轻量级的渐进式 JavaScript 框架,用于构建交互式的前端用户界面。本文的目的是通过简单易懂的方式,帮助初学者快速了解 Vue.js 的基础知识。 前置知识 HTML 基础知识 JavaScript 基础知识 安装 Vue.js 可以通过 CDN 直接引入,也可以通过 NPM 安装。 CDN…

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