vue3组合API中setup、 ref、reactive的使用大全

Vue 3 组合式 API 中 setup、ref、reactive 的使用大全

Vue 3 是 Vue.js 的最新版本,全面升级了组件系统并引入了新的组合 API,使得 Vue.js 在开发复杂应用时更加灵活可维护。其中 setuprefreactive 是 Vue 3 组合式 API 中最常用的三个方法,可以帮助我们快速地实现组件的数据响应式和逻辑处理。下面是它们的完整使用攻略:

1. setup 方法

setup 是 Vue 3 组件中必需的方法,接受两个参数:propscontextprops 为组件传递的属性集合,context 提供了一些实用的上下文信息。

setup(props, context) {
  // 组件的逻辑处理
}

示例一:对组件属性进行处理

setup 中,我们可以对组件的属性进行处理,例如将属性的值进行求和:

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

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

export default {
  props: {
    a: Number,
    b: Number
  },
  setup(props) {
    const result = ref(props.a + props.b)
    return { result }
  }
}
</script>

示例代码中,我们通过 ref 函数来将值设置成响应式的,然后在 return 语句中将其返回,从而在模板中实现双向数据绑定。

示例二:使用 context 对象

setup 中,我们还可以使用 context 对象来获得上下文信息,例如访问组件的 $emit 方法:

<template>
  <button @click="handleClick">Click Me</button>
</template>

<script>
import { setup, useContext } from 'vue'

export default {
  setup() {
    const { emit } = useContext()

    const handleClick = () => {
      emit('click-event')
    }

    return { handleClick }
  }
}
</script>

示例代码中,我们使用 useContext 函数来获取上下文对象。然后,我们可以使用 emit 方法触发 click-event 事件。

2. ref 方法

ref 是 Vue 3 组件中创建响应式数据的函数,可以接受任何 JavaScript 原始类型、对象和数组。通过使用 ref,我们可以很容易地将普通数据变成响应式数据。

const count = ref(0)

示例一:创建响应式数据

在 Vue 3 组件中,我们通过 ref 函数来创建响应式数据,并把它赋值给组件对象:

<template>
  <div>
    <p>{{ count }}</p>
    <button @click="handleClick">Click me</button>
  </div>
</template>

<script>
import { ref } from 'vue'

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

    const handleClick = () => {
      count.value++
    }

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

示例代码中,我们在 setup 方法中使用 ref 函数创建了 count 变量,并将其初始值设置为 0。然后,我们将 counthandleClick 函数设置为组件对象的属性,从而实现了数据的响应式和事件处理。

示例二:直接使用 ref 的限制

需要注意的是,直接使用 ref 函数所创建出来的变量在进行操作时,需要通过 .value 属性进行访问修改。

const count = ref(0)
count.value++

3. reactive 方法

reactive 是 Vue 3 组件中创建响应式对象的函数,可以将一个 JavaScript 对象转化为响应式数据。不同于 ref 函数所创造的变量,ref 中可以直接声明并用 .value 进行修改的特性,reactive 函数所生成的是对象。

const state = reactive({ count: 0 })

示例一:创建响应式对象

在 Vue 3 组件中,我们通过 reactive 函数来创建响应式对象:

<template>
  <div>
    <p>{{ state.count }}</p>
    <button @click="handleClick">Click me</button>
  </div>
</template>

<script>
import { reactive } from 'vue'

export default {
  setup() {
    const state = reactive({ count: 0 })

    const handleClick = () => {
      state.count++
    }

    return { state, handleClick }
  }
}
</script>

示例代码中,我们在 setup 方法中使用 reactive 函数创建了 state 变量,包含一个 count 属性。然后,我们将 statehandleClick 函数设置为组件对象的属性,从而实现了数据的响应式和事件处理。

示例二:多层嵌套对象的响应式更新

当 reactive 函数所生成的对象里还存在嵌套的对象时,需要使用 .value 进行打开,或是用来访问当前 reactive 数据的属性值。示例如下:

const state = reactive({
  count: 0,
  person: {
    age: 0,
    name: ''
  }
})

state.count++
state.person.age++
state.person = {
  age: 20,
  name: 'Tom'
}
state.person.age++

示例代码中,我们在 state 中定义了一个 person 对象,包含 agename 两个属性。然后,我们通过 reactive 函数将 state 对象转化为响应式数据,并进行了一系列的操作。需要注意的是,当我们重新赋值一个新的对象时,它同样需要是响应式数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue3组合API中setup、 ref、reactive的使用大全 - Python技术站

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

相关文章

  • vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件

    使用vue-cli 3来集成vue-bootstrap-datetimepicker日期插件,需要使用以下步骤: 步骤一:安装依赖 在命令行中进入项目根目录,然后运行以下命令来安装需要的依赖: npm install vue-bootstrap-datetimepicker –save 步骤二:引入CSS和JS文件 在你的Vue组件之前,需要引入CSS和J…

    Vue 2023年5月29日
    00
  • 输入npm run xxx后执行原理深入解析

    输入npm run xxx后执行原理深入解析 1. npm run xxx的作用 npm run xxx是用来执行在项目package.json文件中scripts字段中定义的脚本命令xxx。 例如在package.json文件中,定义了以下脚本: "scripts": { "start": "node ap…

    Vue 2023年5月28日
    00
  • 结合Vue控制字符和字节的显示个数的示例

    针对这个问题,我可以提供以下完整攻略: 1. 需求说明 假设现在有这样一个需求,需要在Vue应用中控制一个文本框显示的字符个数,而不是字节数。可能有用户会输入一些中文字符或者emoji表情,这些字符对应的字节数并不相等。因此,我们需要在Vue应用中计算字符个数,才能使文本框的显示效果符合预期。 2. 解决方案 2.1. 方案概述 为了解决这个问题,我们可以使…

    Vue 2023年5月27日
    00
  • vue本地打开build后生成的dist文件夹index.html问题

    针对“vue本地打开build后生成的dist文件夹index.html问题”,这里提供一份完整攻略,以下是具体步骤: 1. 构建vue项目 首先需要以vue-cli工具构建一个基本的vue项目。打开终端,输入以下命令: vue create my-project 其中my-project是你项目的名称,你也可以用其他的名称。 完成之后,进入项目文件夹: c…

    Vue 2023年5月28日
    00
  • vue如何动态实时的显示时间浅析

    那我来分享一下Vue.js实时显示时间的攻略。 1. 使用Vue.js的生命周期函数 Vue.js生命周期函数是指Vue实例在不同阶段会自动执行的一系列函数。我们可以通过生命周期函数来实现实时显示时间的功能。 具体步骤如下: 1.1 创建一个Vue实例 使用Vue.js创建一个Vue实例,在data属性中新增一个变量time,用于存储当前时间,代码如下: v…

    Vue 2023年5月28日
    00
  • 精读《Vue3.0 Function API》

    精读《Vue3.0 Function API》攻略 什么是Vue3.0 Function API Vue3.0 Function API 是 Vue3.0 中新添加的一种 API 范式,它是建立在组合式 API 之上的,旨在提高我们在编写 Vue 应用时的代码 风格及组件复用率等方面的优化。 如何使用Vue3.0 Function API 安装 Vue3.0…

    Vue 2023年5月27日
    00
  • Vue2和Vue3在v-for遍历时ref获取dom节点的区别及说明

    Vue2和Vue3在v-for遍历时ref获取dom节点的区别主要体现在template的使用方式上。下面我将详细介绍Vue2和Vue3在使用v-for遍历时ref获取dom节点的不同之处: Vue2中v-for遍历时ref获取dom节点 在Vue2中我们可以使用Vue提供的特殊属性:ref 来获取dom节点。在使用v-for遍历时,我们可以将ref放在循环…

    Vue 2023年5月29日
    00
  • Vue.js最佳实践(五招助你成为vuejs大师)

    Vue.js最佳实践(五招助你成为vuejs大师)是一篇关于Vue.js开发实践的文章,其中详细讲述了Vue.js最佳的五项实践原则。下面我们将详细介绍这五项实践原则: 一、使用“单文件组件”和“组件懒加载”实现代码复用和性能优化 单文件组件(Single File Components,SFC)是Vue.js提倡的一种组件写法,它将一个组件的HTML、CS…

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