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

yizhihongxing

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组件之极简的地址选择器的实现

    首先我们需要了解一下Vue组件的基本知识。 什么是Vue组件? Vue 组件是可复用的 Vue 实例,拥有自己的视图和行为。在 Vue 中,组件是基本的代码复用单元,一个页面可以由多个小的组件组成,每个组件封装了自己的代码和模板,可以单独的进行开发、测试和维护。 Vue组件的基本结构 一个 Vue 组件通常由模板、样式和逻辑组成。模板是组件的显示部分,样式是…

    Vue 2023年5月29日
    00
  • 在vue中使用express-mock搭建mock服务的方法

    下面我将为您详细讲解在vue中使用express-mock搭建mock服务的方法。 1. 什么是express-mock express-mock是基于Express框架的模拟数据生成器,可以用来模拟API返回数据,支持对于RESTful API的请求方式,非常方便快捷。 2. 安装express-mock 在使用express-mock之前需要安装Node…

    Vue 2023年5月28日
    00
  • vue路由传参的基本实现方式小结【三种方式】

    下面是详细的“vue路由传参的基本实现方式小结【三种方式】”攻略: 一、query方式 在router-link中添加to属性,例如: <router-link :to="{path: ‘detail’, query: {id: 1, name: ‘foo’}}"> 去往详情 </router-link> 这里在t…

    Vue 2023年5月27日
    00
  • 关于Vue中axios的封装实例详解

    下面我将为你详细讲解关于Vue中axios的封装实例详解。 1. axios是什么? axios是一个基于Promise的HTTP客户端,用于浏览器和node.js的请求发送。它可以用于简单地进行HTTP请求,也可以进行拦截请求和响应,转换请求和响应数据,取消请求等操作。 2. axios的优点 基于Promise,易于使用 支持拦截请求和响应 支持转换请求…

    Vue 2023年5月29日
    00
  • Vue extends 属性的用法示例详解

    Vue extends 属性的用法示例详解 Vue框架中有一个非常强大的属性extends,它可以用于扩展组件的功能。本文将详细讲解extends属性的用法,并且提供两个示例说明。 什么是 Vue extends 属性 在Vue组件中,可以使用extends属性对另一个组件进行扩展,从而实现代码的复用。使用extends属性,可以继承父组件的模板、计算属性、…

    Vue 2023年5月28日
    00
  • 微信js-sdk地理位置接口用法示例

    下面我会分为几个部分讲解“微信js-sdk地理位置接口用法示例”的完整攻略。 一、前置条件 在使用微信js-sdk地理位置接口之前,需要确保以下几个条件已经满足: 已经在微信公众平台中配置了JS接口安全域名。 已经在页面中引入微信公众平台提供的js文件(如:http://res.wx.qq.com/open/js/jweixin-1.4.0.js)。 已经申…

    Vue 2023年5月28日
    00
  • 梳理一下vue中的生命周期

    梳理Vue中的生命周期是了解Vue的重要组成部分之一,它可以帮助我们更好地理解Vue的工作原理以及响应式数据的流程。Vue的生命周期可以分为四个阶段: 创建阶段(Creation) 在创建阶段中,Vue组件实例会执行以下生命周期钩子函数: beforeCreate: 在实例创建之前,常用于初始化一些非响应式的数据。 created: 在实例创建之后,常用于获…

    Vue 2023年5月27日
    00
  • 关于Vue的 Vuex的4个辅助函数

    下面是对于“关于Vue的 Vuex的4个辅助函数”的详细攻略: 什么是 Vuex 辅助函数? 在进行 Vuex 的开发过程中,我们需要在组件中访问 Vuex 的 state,mutations 和 actions 等内容,常规的做法是在组件中使用 this.$store.state.myState 这种方式来访问。但是这样的方式不仅冗长而且繁琐,我们需要频繁…

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