位置: IT常识 - 正文

解决在vue3中使用reactive响应式,赋值后造成页面不改变的问题?(vue3 $bus)

编辑:rootadmin
解决在vue3中使用reactive响应式,赋值后造成页面不改变的问题? 文章目录场景原因一、例子二、解决方法1、使用ref存储响应式数据2、在reactive中使用对象包裹要改变的数据3、for of循环push到reactive数据中,不破坏数据结构总结场景原因

推荐整理分享解决在vue3中使用reactive响应式,赋值后造成页面不改变的问题?(vue3 $bus),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3技巧,vue3 onmounted,vue3解决了什么问题,在使用vue碰到的坑,vue3解决了什么问题,在使用vue碰到的坑,vue3解决了什么问题,在使用vue碰到的坑,内容如对您有帮助,希望把文章链接给更多的朋友!

我们需要在vue3中使用服务器的数据渲染到页面上,我使用的是reactive生成的响应式数据属性,但是在挂载后请求的数据并没有渲染显示到页面上。

技术:vue3 、 element-ui-plus

一、例子

home.vue

<template> <div class="common-layout"> <el-menu @select="changeMenu" :collapse="isCollapse" active-text-color="#409eff" background-color="#333744" class="el-menu-vertical-demo" default-active="2" text-color="#fff" :unique-opened="true"> <el-sub-menu :index="item.path" v-for="(item) in parmar.menus" :key="item.id"> <template #title> <el-icon> <List /> </el-icon> <span>{{ item.authName }}</span> </template> <el-menu-item :index="item2.path" v-for="(item2) in item.children" :key="item2.id"> <el-icon> <Menu /> </el-icon> {{ item2.authName }} </el-menu-item> </el-sub-menu> </el-menu> </div></template><script setup>// 引入模块import { reactive, onMounted } from 'vue'import { useRouter } from 'vue-router'import http from '@/utils/request'const router = useRouter();let menusList = reactive([]);onMounted(() => { getData()})const getData = async () => { let { data } = await http.get('/menus'); // 这里直接赋值,会导致menusList失去响应式了 menusList = data.data; console.log(menusList);}const changeMenu = (key) => { router.push('/home/' + key)}</script><style lang="less" scoped>.common-layout { height: 100vh; box-sizing: border-box; position: relative; overflow: hidden; /deep/.el-menu--vertical { margin: 0; border-right: none !important; overflow-x: hidden; height: calc(100vh - 100px); user-select: none; } .el-menu-vertical-demo:not(.el-menu--collapse) { width: 200px; min-height: 400px; }}</style>解决在vue3中使用reactive响应式,赋值后造成页面不改变的问题?(vue3 $bus)

我们通过直接赋值,可以看出数据变为普通的数据了,并不是响应式的。

二、解决方法1、使用ref存储响应式数据

代码如下:

<script setup>// 引入模块import { ref, reactive, onMounted } from 'vue'import http from '@/utils/request'let menusList = ref([]);onMounted(() => { getData()})const getData = async () => { let { data } = await http.get('/menus'); // 这里直接赋值value,在页面上直接使用menusList即可! menusList.value = data.data;}</script>

可以看出打印出的数据是经过ref劫持的数据,是响应式的。

2、在reactive中使用对象包裹要改变的数据

代码如下:

<script setup>// 引入模块import { reactive, onMounted } from 'vue'import http from '@/utils/request'let parmar = reactive({ menus: [ ]});onMounted(() => { getData()})const getData = async () => { let { data } = await http.get('/menus'); // 这里直接赋值对象里面的数据,就不会造成把响应式替换掉的情况了,直接在页面上通过parmar.menus使用数据! parmar.menus = data.data; console.log( parmar);}</script>

使用这种方式,数据也是响应式的。

3、for of循环push到reactive数据中,不破坏数据结构

代码如下:

<script setup>// 引入模块import { reactive, onMounted } from 'vue'import http from '@/utils/request'let menusList = reactive([])onMounted(() => { getData()})const getData = async () => { let { data } = await http.get('/menus'); for (let i of data.data){ menusList.push(i); } console.log(menusList);}</script>

总结

主要的问题就是使用reactive生成的响应式数据,在直接赋值时把响应式数据给替换为了普通数据了,导致无法监听数据的变化。

本文链接地址:https://www.jiuchutong.com/zhishi/300223.html 转载请保留说明!

上一篇:Vue 国际化之 vue-i18n 的使用(vue国际化占位符)

下一篇:PyTorch学习系列教程:何为Tensor?(pytorch如何学)

  • 小米手环如何连接手机(小米手环如何连接keep)

    小米手环如何连接手机(小米手环如何连接keep)

  • 什么是pst

    什么是pst

  • wifi开启ap隔离什么意思(无线网设置开启ap隔离什么意思)

    wifi开启ap隔离什么意思(无线网设置开启ap隔离什么意思)

  • 苹果xr反向充电设置方法(苹果xr反向充电开关怎么设置)

    苹果xr反向充电设置方法(苹果xr反向充电开关怎么设置)

  • oppo手机卸载软件在哪里能找到(oppo手机卸载软件显示桌面已锁定)

    oppo手机卸载软件在哪里能找到(oppo手机卸载软件显示桌面已锁定)

  • 苹果手机引导式访问密码忘了怎么办(苹果手机引导式访问没反应)

    苹果手机引导式访问密码忘了怎么办(苹果手机引导式访问没反应)

  • cdr软件主要做什么(cdr软件有什么用)

    cdr软件主要做什么(cdr软件有什么用)

  • 笔记本电脑自身有网吗(笔记本电脑自身鼠标怎么使用)

    笔记本电脑自身有网吗(笔记本电脑自身鼠标怎么使用)

  • excel冻结窗格怎么设置前三行和列(excel冻结窗格怎么冻结行和列)

    excel冻结窗格怎么设置前三行和列(excel冻结窗格怎么冻结行和列)

  • 手机怎么设置返回键在屏幕内(手机怎么设置返回按键)

    手机怎么设置返回键在屏幕内(手机怎么设置返回按键)

  • 手机充电器功率多少瓦(手机充电器功率不一样可以混用吗)

    手机充电器功率多少瓦(手机充电器功率不一样可以混用吗)

  • 苹果11如何录音(苹果11如何录音取证)

    苹果11如何录音(苹果11如何录音取证)

  • wps打不开没反应(wps打不开了是什么原因)

    wps打不开没反应(wps打不开了是什么原因)

  • 华为mate30pro与p30pro参数对比(华为mate30pro与p30pro哪个好)

    华为mate30pro与p30pro参数对比(华为mate30pro与p30pro哪个好)

  • 华为视频文件存在哪里(华为视频文件存放目录)

    华为视频文件存在哪里(华为视频文件存放目录)

  • 小米双闪电标志是什么意思(小米 双闪电)

    小米双闪电标志是什么意思(小米 双闪电)

  • 手机qq怎么查看留言(手机qq怎么查看密码是多少)

    手机qq怎么查看留言(手机qq怎么查看密码是多少)

  • 天猫精灵ccl有连续对话功能吗(天猫精灵cc10联网)

    天猫精灵ccl有连续对话功能吗(天猫精灵cc10联网)

  • 荣耀v20怎么看后台(华为荣耀v20怎么打开后盖)

    荣耀v20怎么看后台(华为荣耀v20怎么打开后盖)

  • 米家app怎么授权小爱同学(米家app怎么授权播放器)

    米家app怎么授权小爱同学(米家app怎么授权播放器)

  • 如何删除京东待评价记录(如何删除京东待评价信息)

    如何删除京东待评价记录(如何删除京东待评价信息)

  • 苹果八像素多少(苹果八的像素是多少)

    苹果八像素多少(苹果八的像素是多少)

  • iqoopro5g支持无线充电吗(iqoopro5g可以无线充电吗)

    iqoopro5g支持无线充电吗(iqoopro5g可以无线充电吗)

  • 通用串行总线usb控制器感叹号(通用串行总线USB控制器驱动感叹号)

    通用串行总线usb控制器感叹号(通用串行总线USB控制器驱动感叹号)

  • 【css】svg修改图标颜色(svg怎么改大小)

    【css】svg修改图标颜色(svg怎么改大小)

  • 最奢华的iPad3是什么(ipad3性价比)

    最奢华的iPad3是什么(ipad3性价比)

  • 收取罚款
  • 承兑可以要吗
  • 当地外包公司是干什么的
  • 资产减值损失为正
  • 契税的会计分录有哪些
  • 长期股权投资减值准备
  • 服务业预收款项怎么确认收入
  • 电子承兑背书失败是怎么回事
  • 物流 贷款
  • 递延收益在资产负债表哪里列示
  • 投资者撤回投资额300000
  • 没有发票怎么报销入账
  • 钢化玻璃税率是多少?
  • 发票与报税记录不一致
  • 不需要缴纳增值税的有
  • 成本费用调整法
  • 可供出售金融资产新准则叫什么
  • 计提专项借款本月利息会计分录
  • 餐饮发票免税能报销吗
  • virtualbox打不开虚拟机
  • 承兑兑现违法吗
  • 中介公司收取中介费过高违法吗
  • 对公收到别人的转账怎么记账
  • 如何计算每个月的天数
  • 公司资质办理费用
  • php面向对象实例
  • 实收资本可以大于注册资本吗
  • 在建工程进项税额转出
  • win10待机后无法输入密码
  • PHP:pg_result_seek()的用法_PostgreSQL函数
  • php $_files
  • 费用扣除制度
  • 报销差旅费会计凭证
  • 增值税多交可以退税吗
  • 大学网页制作作业dw
  • 结转工资费用
  • 应收票据是借还是贷
  • HTTP 协议
  • 前端处理map
  • php5魔术方法
  • 一个简单的后台与数据库交互的登录与注册[sql注入处理、以及MD5加密]
  • mongodb集群开启auth认证
  • mongodb查询工具
  • 增值税年底抵扣
  • 给客户的回扣如何做账
  • 不在经营范围内经营违反了什么法
  • mysql如何调优
  • 企业所得税季末从业人数
  • 工资0申报怎么报
  • 高新技术企业的申报条件
  • 预付账款是负数有什么税收风险
  • 建筑企业预缴税款怎么算
  • 付款申请单如何转填记账凭证
  • 过期食品返厂会重新打日期吗
  • 装修费用一次性摊好还是分期好
  • 小规模纳税人从三万到十万
  • 关于端午节福利发放的通知(通知公告)
  • 吸收的三种方式
  • 什么是备查账
  • MySQL数据库中把表中的一个字段重命名
  • 文件历史版本功能
  • win10预览版21277
  • win7系统如何删除隐藏文件
  • redhat下载教程
  • win10打开此电脑的快捷键
  • win7 c盘莫名其妙满了
  • linux小技巧
  • bootstrap table edit
  • 安卓图像处理app
  • bootstrap技术教程
  • js中date
  • 批处理应用实例
  • linux中crontab
  • android摇一摇实现
  • jquery教程实例
  • android webview webgl
  • unity的shader用法
  • android 获取手机屏幕截图
  • 出口运输费会计分录
  • 环保税征税范围44项
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设