vue3中的hooks总结

yizhihongxing

下面是“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实现同时设置多个倒计时

    要实现同时设置多个倒计时,可以使用Vue框架提供的计时器插件Vue Countdown来完成。Vue Countdown是一个Vue的计时器组件,可以轻松地对指定时间进行倒计时,并在倒计时过程中提供相关的辅助功能。下面是实现的步骤: 安装Vue Countdown插件 可以使用npm安装Vue Countdown: npm install vue-count…

    Vue 2023年5月29日
    00
  • Vue3生命周期函数和方法详解

    Vue3生命周期函数和方法详解 生命周期函数 Vue3中的生命周期函数有如下: beforeCreate 在实例准备被创建之前,也就是数据观测和初始化事件还没开始的时候触发。在这个阶段无法获取到 data 和 methods 中的数据。此时我们可以在此阶段中做一些初始化的操作,如全局变量的初始化。 export default { beforeCreate(…

    Vue 2023年5月28日
    00
  • vue+quasar使用递归实现动态多级菜单

    使用递归实现动态多级菜单通常用在需要动态循环渲染多级菜单的场景中,常见的应用场景包括权限管理系统或者多层级的导航菜单。 下面将介绍使用Vue.js和Quasar框架实现递归渲染多级菜单的完整攻略。 创建数据结构 首先需要定义一个数据结构来表示多级菜单,可以使用一个包含名称、路由等属性的对象。 { name: ‘菜单名称’, route: ‘路由地址’, ch…

    Vue 2023年5月28日
    00
  • Vue计算属性的使用

    Vue计算属性的使用 Vue中的计算属性是一种依赖其他属性并且根据这些属性进行计算的属性。它们在模板中使用时表现为普通属性,但是它们的值实际上是在计算中获得的。计算属性具有缓存机制,只有在它的相关依赖发生改变时才会重新计算。 定义计算属性 定义一个计算属性需要在Vue实例中通过computed属性定义一个对象,并在对象中定义计算属性的名称和计算方法: var…

    Vue 2023年5月27日
    00
  • vue多次循环操作示例

    下面是关于“vue多次循环操作示例”的完整攻略,我将分两个示例说明: 示例一:多层循环嵌套 在vue中,可以使用嵌套的v-for指令来进行多层循环嵌套。比如,我们有一个任务列表,每个任务列表下面又有多个子任务列表,现在要把这些任务列表都展示出来。可以使用以下代码实现: <div v-for="(task, index) in tasks&qu…

    Vue 2023年5月27日
    00
  • Vue的data为啥只能是函数原理详解

    Vue的data中为什么只能是函数呢?这是一个常见的Vue面试题,其主要原因是为了保证每个Vue组件实例都有一个独立的数据对象,在多个组件实例中互不干扰。 具体来说,当一个组件实例化时,如果data选项是一个对象,那么这个对象会被所有这个组件的实例共享,这样就会导致一个实例修改了data中的值,其他实例中的值也会发生改变,这样就无法实现组件复用了。 而当我们…

    Vue 2023年5月28日
    00
  • Vue 路由传参加密的示例代码

    下面我将详细讲解“Vue 路由传参加密的示例代码”的完整攻略。 1. 添加 crypto-js 库 首先我们需要引入一个加密解密库:crypto-js。可以使用 npm 或者通过 CDN 引入。 <!– 通过 CDN 引入 –> <script src="https://cdn.bootcdn.net/ajax/libs/cr…

    Vue 2023年5月27日
    00
  • 详解Vue中的keep-alive

    标题: 详解Vue中的keep-alive使用方法和原理 正文:Vue中的keep-alive是一个性能优化的重要组件,它可以将不活跃的组件缓存起来,减少组件的不必要的重渲染,提升页面的渲染效率。本文主要介绍keep-alive的使用方法和原理。 keep-alive的常用属性 keep-alive有几个常用的属性: include:需要被缓存的组件名,可以…

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