vue3中的hooks总结

下面是“Vue3中的Hooks总结”的完整攻略。

Vue3中的Hooks总结

什么是Hooks?

Hooks是Vue3中新增的API,是一组可重用状态逻辑(如设置计时器或订阅数据源),它们可以按照需要任意组合,以用于构建自定义的Vue函数式组件。使用Hooks的函数式组件让我们使逻辑更加封装和优雅,且更易于迭代和测试。

总体而言,Hooks的目的是在不编写类组件的情况下,让开发者能够在函数系组件中使用各种React的特性,例如状态、生命周期,及其他React方法等。

Vue3中的Hooks种类

useState

vue3使用reactive代替了vue2的Object.defineProperty来追踪响应式对象的改变,因此用reactive建立响应式对象和ref建立响应式标量很简单,但是建一个保存状态的变量却一点也不简单了,难道只能使用data?No!Vue3为我们这样的开发者准备了‘useState’这个Hook来改变函数组件的状态。

示例代码:

<template>
  <button @click="increment">点击我计数+1</button>
</template>

<script>
import { useState } from 'vue'

export default {
  setup () {
    const [count, setCount] = useState(0)
    const increment = () => setCount(count + 1)

    return {
      count,
      increment
    }
  }
}
</script>

当我们点击按钮时,count将从0变为1,Hook将在内存中保存状态。

useEffect

如果您有使用过React,则一定会知道React的useEffect,Vue3版的useEffect和React中的useEffect非常类似。 这里的 useEffect Hook 可以理解为 Vue2 中的 mountedupdated 钩子的组合。

示例代码:

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

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

export default {
  setup () {
    // 设置响应式对象
    const state = reactive({
      count: 0
    })
    // 设置计算属性
    const message = computed(() => `count的值目前是 ${state.count}`)

    // useEffect 中要执行的操作
    const logOnUpdate = () => {
      console.log('每次 count 变化后,logOnUpdate会运行')
    }
    // useEffect 副作用
    watch(() => state.count, logOnUpdate)

    // mounted钩子
    onMounted(() => {
      console.log('mounted 钩子启动')
      setTimeout(() => {
        // 设置计数器
        state.count = 100
      }, 1000)
    })

    return {
      message
    }
  }
}
</script>

当数值实时更新时,logOnUpdate会运行,所以我们会在控制台看到log信息。当mounted执行时,我们会在控制台看到“mounted钩子启动”的log,一秒后计数器将增加到100。

总结

Hooks在Vue3中是一个全新的概念,使得组件化的编写变得更加方便和易于使用,这是Vue3的一大创新。

以上是本攻略简要介绍了Vue3中的Hooks和其中两个实现,包括useState和useEffect两种。 但Hooks的种类远远不止这两种,例如useReducer和useContext,这些是在React中常用的Hooks,Vue3中也有相应的实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue3中的hooks总结 - Python技术站

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

相关文章

  • Vue.directive 自定义指令的问题小结

    下面是关于Vue自定义指令的问题小结的详细攻略: 什么是Vue自定义指令? 在Vue中,指令是一种带有 v- 前缀的特殊属性。指令提供了一些带有响应式行为的语法糖。Vue中已经提供了很多内置指令,如v-if、v-for、v-show等。 Vue允许我们自定义指令,方便我们在实现一些特殊功能时使用。我们可以使用Vue.directive方法来自定义指令,该方法…

    Vue 2023年5月28日
    00
  • vue 2.0项目中如何引入element-ui详解

    当我们想利用 Element UI 搭建 Vue 2.0 项目时,首先需要引入 Element UI。下面就是详细的操作步骤: 一、安装 Element UI Element UI 是一个基于 Vue.js 的桌面端组件库,提供了众多酷炫的组件,且使用方便。我们可以通过 npm 来进行安装 Element UI。 在命令行中执行以下命令: npm i ele…

    Vue 2023年5月28日
    00
  • Vue项目中Api的组织和返回数据处理的操作

    下面我来详细讲解“Vue项目中Api的组织和返回数据处理的操作”的完整攻略。 Api的组织 在Vue项目中,可以把Api统一组织到一个单独的文件夹中,比如api文件夹。在该文件夹下,可以按照不同的模块或功能,再分别创建不同的文件来管理相关的Api,比如user.js用于管理用户相关的Api,product.js用于管理商品相关的Api等。 下面是一个示例,创…

    Vue 2023年5月28日
    00
  • vue常用知识点整理

    Vue常用知识点整理 1. Vue实例 Vue实例是Vue的基本模块,用它来创建Vue应用。一个Vue应用可以有多个Vue实例。 创建Vue实例的语法如下: var vm = new Vue({ // 选项 }) 其中,vm 是Vue实例,选项包括 el, data, template 等等。 2. 数据绑定 Vue实现了双向数据绑定,当数据改变时,视图也会…

    Vue 2023年5月28日
    00
  • vue3 typescript封装axios过程示例

    关于“vue3 typescript封装axios过程示例”的完整攻略,以下是步骤: 一、安装依赖 在Vue3项目中,先安装vue3,使用命令:npm install vue@next –save 安装typescript,使用命令:npm install typescript –save-dev 安装axios,使用命令:npm install axi…

    Vue 2023年5月28日
    00
  • vue路由$router.push()使用query传参的实际开发使用

    关于vue路由$router.push()使用query传参的实际开发使用,我将从以下几个方面进行详细讲解。 1. 路由传参 在vue开发中,路由传参是一个非常重要的概念。路由传参可以使我们的组件之间传递数据,可以实现多个组件之间的动态交互。 我们可以通过以下两种方式进行路由传参进行传参: params:通过路由路径匹配传递的参数,通常用于传递必须的参数,如…

    Vue 2023年5月27日
    00
  • Vue.component的属性说明

    下面详细讲解一下Vue中的组件属性说明。 Vue.component的属性说明 在Vue中,组件的一些常用属性可以用Vue.component进行定义。下面是Vue.component的主要属性说明: props props属性用于接收父组件传递过来的数据,在组件内部通过 this.$props 访问。它是一个数组或对象,数组中的元素可以是字符串或对象。如果…

    Vue 2023年5月27日
    00
  • 详解vue-cli项目在IE浏览器打开报错解决方法

    当使用vue-cli创建的项目在IE浏览器中打开时,可能会遇到Object doesn’t support property or method ‘assign’或Promise未定义等错误。这是因为IE浏览器不支持ES6(ES2015)新特性,而vue-cli默认使用的是ES6语法并使用了一些ES6新特性,这对于IE浏览器来说是无法正确识别的。 下面是解决…

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