vue3 reactive定义的引用类型直接赋值导致数据失去响应式问题

 更新时间:2023年06月06日 11:29:45   作者:秃头小宝贝@  
这篇文章主要介绍了vue3 reactive定义的引用类型直接赋值导致数据失去响应式问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

reactive定义的引用类型直接赋值导致数据失去响应式

<script setup>
import {reactive,onMounted} from 'vue'
const userMenu=reactive([])
onMounted(()=>{
	userMenu=[1,2,3]
})
</script>
<template>
	<div>示例:{{userMenu}}</div>
</template>
<style>
</style>

如上代码,我们定义了一个userMenu的reactive数组,我们在onMounted生命周期直接给userMenu重新赋值为【1,2,3】,但是我们打开页面显示的仍然是之前的空数组

 这是因为,reactive定义的数组或者对象,不能直接赋值修改,否则定义的数据userMenu将失去响应性。

我们可以按照如下代码:

<script setup>
import {reactive,onMounted} from 'vue'
const userMenu=reactive({
	arr:[]
})
onMounted(()=>{
	userMenu.arr=[1,2,3]
})
</script>
<template>
	<div>示例:{{userMenu.arr}}</div>
</template>
<style>
</style>

将空数组作为对象的一个属性,我们直接修改arr属性为【1,2,3】,此时userMenu不会失去响应性,页面内容也就跟着变化成【1,2,3】

注意:

vue3中reactive定义的引用类型直接赋值导致数据失去响应式,我们可以通过修改对象的属性的形式,实现修改数据

vue3中reactive的理解

1.什么是reactive?

reactive是Vue3中提供实现响应式数据的方法.

在Vue2中响应式数据是通过defineProperty来实现的.

而在Vue3响应式数据是通过ES6的Proxy来实现的

2.reactive注意点

reactive参数必须是对象(json/arr)

如果给reactive传递了其他对象,默认情况下修改对象,界面不会自动更新,如果想更新,可以通过重新赋值的方式.

错误示范

当传递的是非对象时,页面不会发生响应

正确实例

arr正确实例

传入数组会转成proxy对象

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决vue生产环境,页面卡死的问题

    解决vue生产环境,页面卡死的问题

    这篇文章主要介绍了解决vue生产环境,页面卡死的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Vue3中正确使用ElementPlus的示例代码

    Vue3中正确使用ElementPlus的示例代码

    这篇文章主要介绍了Vue3中正确使用ElementPlus的示例代码,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • Vue3中插槽slot的使用方法详解

    Vue3中插槽slot的使用方法详解

    在Vue 3中,插槽(slot)是一种强大的内容分发API,它允许组件的模板开发者定义一种插槽,下面就跟随小编一起来学习一下它的具体使用吧
    2024-11-11
  • vue+elementUI中el-radio设置默认值方式

    vue+elementUI中el-radio设置默认值方式

    这篇文章主要介绍了vue+elementUI中el-radio设置默认值方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 使用Vue做一个简单的todo应用的三种方式的示例代码

    使用Vue做一个简单的todo应用的三种方式的示例代码

    这篇文章主要介绍了使用Vue做一个简单的todo应用的三种方式的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • vue中利用pinyin-pro纯前端实现拼音的模糊搜索功能

    vue中利用pinyin-pro纯前端实现拼音的模糊搜索功能

    这篇文章主要介绍了vue中利用pinyin-pro纯前端实现拼音的模糊搜索,实现思路很简单,通过安装配置插件编写工具类,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • vue v-if未生效问题及解决

    vue v-if未生效问题及解决

    这篇文章主要介绍了vue v-if未生效问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue利用computer解决单项数据流的问题详解

    Vue利用computer解决单项数据流的问题详解

    Vue 是一个非常流行和强大的前端框架,它让我们可以用简洁和优雅的方式来构建用户界面,今天我们来分享一个 Vue 中非常经典的问题,也是一个非常实用的技巧,希望对大家有所帮助
    2023-07-07
  • vue自定义穿梭框支持远程滚动加载的实现方法

    vue自定义穿梭框支持远程滚动加载的实现方法

    这篇文章主要介绍了vue自定义穿梭框支持远程滚动加载,iview是全局注入,基本使用原先的类名进行二次创建公共组件,修改基础js实现逻辑,本文结合实例代码介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • Vue3 TypeScript 实现useRequest详情

    Vue3 TypeScript 实现useRequest详情

    本文介绍了Vue3 TypeScript实现useRequest详情,useRequest可能是目前社区中最强大,最接地气的请求类 Hooks了。可以覆盖99%的网络请求场景,无论是读还是写,无论是普通请求还是分页请求,无论是缓存还是防抖节流,通通都能支持,关于其介绍需要的小伙伴可以参考一下
    2022-05-05

最新评论