我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解Vue3中ref和reactive函数的使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解Vue3中ref和reactive函数的使用

前言

上一篇博文介绍 setup 函数的时候,最后出现一个问题,就是在 setup 函数中,编写一个事件,直接去修改定义的变量,发现页面上没有更新成功,并且控制台报错,那这篇博客就是讲解遇到的这个问题应该如何处理。

ref 函数介绍

  • ref 作用就是将基础数据转换为响应式数据,把数据包装成响应式的引用数据类型的数据。
  • 通过对参数返回值的 value 属性获取响应式的值,并且修改的时候也需要对 value 进行修改。
  • 在 vue2 当中,通过给元素添加 ref='xxx' ,然后使用 refs.xxx 的方式来获取元素,vue3 也可以。
  • 当 ref 里面的值发生变化的时候,视图会自动更新数据。
  • ref 可以操作基本数据类型和复杂数据类型,建议使用 ref 操作只对基本数据类型进行操作。

ref 函数使用

使用 ref 函数很简单,首先要在页面引用,然后就可以直接使用了,具体怎么使用呢,下面为了方便介绍,简单来几个案例。

ref 函数处理基本数据类型

首先提一个需求:页面有一个名称需要显示,有一个按钮,点击按钮的时候修改页面展示的这个名字。

<template>
  <div>
    <h1>ref reactive 函数</h1>
    <h1>姓名:{{name_ref}}</h1>
    <el-button type="primary" @click="btn">修改名字</el-button>
  </div>
</template>
<script>
  import { ref } from 'vue'  // 引入 ref
  export default {
    setup() {
      const name = '??.'   // 创建一个变量为 ??.
      const name_ref = ref(name)   // ref 将参数包裹转换成响应式数据
      const btn = () => {   // 按钮点击修改名字
        name_ref = '我是??.'   // 将名字内容改为 我是??. 
      }
      return { name_ref, btn }  // 把页面需要使用的参数和方法抛出去
    }
  }
</script>

编写完上面的代码保存刷新,可以正常渲染数据,但是点击按钮修改名字的时候,出现问题!

为什么使用过 ref 将数据映射为响应式数据还是报错呢?我们可以先打印一下 ref 包裹后,也就是 name_ref 这个参数,看一下他的结构。

所以说修改代码:

<template>
  <div>
    <h1>ref reactive 函数</h1>
    <h1>姓名:{{name_ref}}</h1>
    <el-button type="primary" @click="btn">修改名字</el-button>
  </div>
</template>
<script>
  import { ref } from 'vue'
  export default {
    setup() {
      const name = '??.'
      const name_ref = ref(name)
      console.log(name_ref)
      const btn = () => {
        name_ref.value = '我是??.'  // 对响应式数据的value进行操作
      }
      return { name_ref, btn }
    }
  }
</script>

然后在保存代码刷新页面查看效果。

非常棒,数据完美的修改了。

有一点需要说一下哈,就是在单文件组件中,不必写value,因为setup方法会自动解析,简单的可以理解成 html 代码不需要额外操作 value,但是逻辑层需要。

ref 函数处理复杂数据类型

首先声明:不建议使用 ref 函数处理复杂数据类型(数组、对象等),用 ref 函数处理基本数据类型(数字、字符串等)就可以了。

例如我们写一个案例,创建一个个人信息,放到对象里面展示。

<template>
  <div>
    <h1>ref reactive 函数</h1>
    <h1>姓名:{{name_ref.name}}</h1>
    <h1>年龄:{{name_ref.age}}</h1>
  </div>
</template>
<script>
  import { ref } from 'vue'
  export default {
    setup() {
      const boy = {
        name: '??.',
        age: 10
      }
      const name_ref = ref(boy)
      console.log(name_ref)
      return { name_ref }
    }
  }
</script>

我们先看一下对象被 ref 函数包裹后的数据结构。

所以说,对象而言,我们修改也是通过 value 进行操作。

<template>
  <div>
    <h1>ref reactive 函数</h1>
    <h1>姓名:{{name_ref.name}}</h1>
    <h1>年龄:{{name_ref.age}}</h1>
    <el-button type="primary" @click="btn">修改名字</el-button>
  </div>
</template>
<script>
  import { ref } from 'vue'
  export default {
    setup() {
      const boy = {
        name: '??.',
        age: 10
      }
      const name_ref = ref(boy)
      console.log(name_ref)
      const btn = () => {
        name_ref.value.name = '我是??.'  // 对响应式数据的value进行操作
        name_ref.value.age = 11  // 对响应式数据的value进行操作
      }
      return { name_ref, btn }
    }
  }
</script>

保存代码,刷新页面,查看效果。

看到名称和年龄都被成功修改了。

当然了,对于数组的操作也是一样的啦!

<template>
  <div>
    <h1>ref reactive 函数</h1>
    <h1>姓名:{{name_ref[0]}}</h1>
    <h1>年龄:{{name_ref[1]}}</h1>
    <el-button type="primary" @click="btn">修改名字</el-button>
  </div>
</template>
<script>
  import { ref } from 'vue'
  export default {
    setup() {
      const boy = ['??.', 10]
      const name_ref = ref(boy)
      const btn = () => {
        name_ref.value[0] = '我是??.'  // 对响应式数据的value进行操作
        name_ref.value[1] = 11  // 对响应式数据的value进行操作
      }
      return { name_ref, btn }
    }
  }
</script>

保存查看,一样的效果。

ref 函数获取单个DOM元素

和 vue2 一样,可以使用 ref 获取元素,用法和操作数据类型相似。

页面上有一个标签,点击按钮,获取标签的相关数据。

<template>
  <div>
    <h1>ref reactive 函数</h1>
    <p style="color: blue;" ref="boy">我是??.</p>
    <el-button type="primary" @click="btn">获取元素</el-button>
  </div>
</template>
<script>
  import { ref, onMounted } from 'vue'
  export default {
    setup() {
      let boy = ref();
      const btn = () => {
        console.log(boy)
        console.log(boy.value)
        console.log(boy.value.innerText)
        console.log(boy.value.style.color)
      }
      return {boy, btn }
    }
  }
</script>

刷新查看运行效果。

其他相关方法

isRef

判断是否为 ref 对象。

<script>
  import { ref, isRef } from 'vue'
  export default {
    setup() {
      const a = ref('a')
      const b = 'b' 
      console.log(isRef(a))   // true
      console.log(isRef(b))   // false
    }
  }
</script>

unref

如果参数为 ref,则返回内部值,否则返回参数本身。

val = isRef(val) ? val.value : val

上边代码可以看懂吧?

<script>
  import { ref, unref } from 'vue'
  export default {
    setup() {
      const temp = ref(3)
      const newTemp = unref(temp) // newTemp 确保现在是数字类型 3
      const a = unref(1) // a 确保现在是数字类型 1
      console.log(newTemp, a)
    }
  }
</script>

好了,这是 ref 函数和与其常见的相关的其他函数相关的知识点内容,到此为止吧,有其他的可以自己在研究一下。

reactive 函数介绍

上面说了 ref 函数的基本用法,接下来是 reactive 函数,它的用法与 ref 函数的用法相似,也是将数据变成响应式数据,当数据发生变化时UI也会自动更新。不同的是 ref 用于基本数据类型,而 reactive 是用于复杂数据类型,所以说,不建议用 ref 函数来处理复杂数据类型的原因就是,有 reactive 来处理复杂类型数据。

reactive 函数使用

用完了 ref 函数,那 reactive 函数就很好理解了哈。

ref 函数处理对象

还是, reactive 函数用来处理数组或者是对象,我们还是写一个案例,操作人的基本信息。

我们还是先打印一下用 reactive 函数包裹后的数据结构。

<template>
  <div>
    <h1>ref reactive 函数</h1>
    <p>姓名:{{boy_reactive.name}}</p>
    <p>年龄:{{boy_reactive.age}}</p>
  </div>
</template>
<script>
  import { reactive } from 'vue'
  export default {
    setup() {
      const boy = {
        name: '我是??.',
        age: 10
      }
      const boy_reactive = reactive(boy)
      console.log(boy_reactive)
      return { boy_reactive }
    }
  }
</script>

有打印的结果我们可以看见,这时候的数据就不是被包裹在 value 下面了,所以说我们可以直接获取到。

<template>
  <div>
    <h1>ref reactive 函数</h1>
    <p>姓名:{{boy_reactive.name}}</p>
    <p>年龄:{{boy_reactive.age}}</p>
    <el-button type="primary" @click="btn">修改信息</el-button>
  </div>
</template>
<script>
  import { reactive } from 'vue'
  export default {
    setup() {
      const boy = {
        name: '我是??.',
        age: 10
      }
      const boy_reactive = reactive(boy)
      const btn = () => {
        boy_reactive.name = '??.'
        boy_reactive.age = 11
      }
      return { boy_reactive, btn }
    }
  }
</script>

保存刷新,查看效果。

ref 函数处理数组

处理数组的方式和处理对象的方式是一样一样的。

直接上代码:

<template>
  <div>
    <h1>ref reactive 函数</h1>
    <p>姓名:{{boy_reactive[0]}}</p>
    <p>年龄:{{boy_reactive[1]}}</p>
    <el-button type="primary" @click="btn">修改信息</el-button>
  </div>
</template>
<script>
  import { reactive } from 'vue'
  export default {
    setup() {
      const boy = ['我是??.', 10]
      const boy_reactive = reactive(boy)
      const btn = () => {
        boy_reactive[0] = '??.'
        boy_reactive[1] = 11
      }
      return { boy_reactive, btn }
    }
  }
</script>

我们可以看到效果是一样的。

以上就是详解Vue3中ref和reactive函数的使用的详细内容,更多关于Vue3 ref reactive的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解Vue3中ref和reactive函数的使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解vue3中ref和reactive用法和区别

vue3中ref和reactive区别 1、前言2、基本用法2.1 ref2.2 reactive 3、ref和reactive定义数组对比3.1 ref定义数组3.1 reactive定义数组 4、ref 和reactiv
2023-08-30

vue3中如何使用ref和reactive

这篇文章主要介绍“vue3中如何使用ref和reactive”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue3中如何使用ref和reactive”文章能帮助大家解决问题。1.前言vue3新增了r
2023-07-06

vue3中ref和reactive怎么使用

这篇“vue3中ref和reactive怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue3中ref和reacti
2023-07-05

Vue3中的ref和reactive怎么使用

今天小编给大家分享一下Vue3中的ref和reactive怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、是什么r
2023-07-06

Vue3中的ref和reactive如何使用

这篇文章主要讲解了“Vue3中的ref和reactive如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3中的ref和reactive如何使用”吧!一、是什么ref和reacti
2023-07-06

vue3中如何使用setup、 ref和reactive

1.初识setUp的使用简单介绍下面的代码功能:使用ref函数,去使用监听某一个变量的变化,并且把它渲染到视图上。setUp函数是组合API的入口函数。这个是非常重要的。setUp可以去监听变量的变化哈!我们将会利用它ref在vue中内置,需要导入。{{countNum}}按钮import{ref}from&#39;vue&#39;exportdefault{name:&#39;App&#39;,setup(){//这一句表示的是定义了一个变量count。这个变量
2023-05-16

vue3中的ref、reactive怎么使用

本篇内容主要讲解“vue3中的ref、reactive怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue3中的ref、reactive怎么使用”吧!reactive()基本用法在 Vu
2023-07-05

vue3 中ref和reactive的区别讲解

如果在template里使用的是ref类型的数据, 那么Vue会自动帮我们添加.value,如果在template里使用的是reactive类型的数据, 那么Vue不会自动帮我们添加.value,这篇文章主要介绍了vue3 中ref和reactive的区别,需要的朋友可以参考下
2022-12-19

怎么在vue3中使用setup、 ref和reactive

本文小编为大家详细介绍“怎么在vue3中使用setup、 ref和reactive”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么在vue3中使用setup、 ref和reactive”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入
2023-07-06

Vue3中reactive与ref函数使用场景是什么

本文小编为大家详细介绍“Vue3中reactive与ref函数使用场景是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue3中reactive与ref函数使用场景是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习
2023-07-02

vue3中的ref与reactive如何使用

本文小编为大家详细介绍“vue3中的ref与reactive如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue3中的ref与reactive如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、r
2023-07-06

vue3中ref和reactive的用法和解析(推荐)

这篇文章主要介绍了vue3的ref和reactive的用法和解析,开始部分讲解了ref,reactive的使用实例,如何进行类型的标注,配合ts这么使用,接着讲解了两者的区别,分别需要注意的点,还有ref的顶层自动解包,需要的朋友可以参考下
2023-03-19

vue3中setup()和reactive()函数怎么使用

一、组合式API对比vue2项目结构在vue2当中1.优点:易于学习和使用,写代码的位置已经约定好。2.缺点:对于大型项目,不利于代码的复用、不利于管理和维护。3.解释:同一功能的数据和业务逻辑分散在同一个文件的N个地方,随着业务复杂度的上升,我们需要经常在类似于data()以及methods中进行来回的处理在vue3当中1.优点:可以把同一功能的数据和业务逻辑组织到一起,方便复用和维护。2.缺点:需要有良好的代码组织和拆分能力,相对没有Vue2容易上手。3.解释:注意:为了能让大家较好的过渡到
2023-05-19

vue3中的ref与reactive使用方法对比

Vue3提供了两个新的API:ref和reactive,它们可以帮助我们更好地管理和处理响应式数据,这篇文章主要介绍了vue3中的ref与reactive的区别和使用方法,需要的朋友可以参考下
2023-05-16

编程热搜

目录