位置: 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如何学)

  • 苹果13promax怎么设置返回键(苹果13promax怎么显示电池电量百分比)

    苹果13promax怎么设置返回键(苹果13promax怎么显示电池电量百分比)

  • 2022微信免密支付在哪里关闭(2022微信免密支付找不到了)

    2022微信免密支付在哪里关闭(2022微信免密支付找不到了)

  • 佳能打印机TS3380怎么加墨水(佳能打印机ts3380警告灯一直亮)

    佳能打印机TS3380怎么加墨水(佳能打印机ts3380警告灯一直亮)

  • 2014年苹果出了什么手机(2014年发布的苹果产品)

    2014年苹果出了什么手机(2014年发布的苹果产品)

  • 酷派手机开不了机怎么办(酷派手机开不了机闪烁灯亮)

    酷派手机开不了机怎么办(酷派手机开不了机闪烁灯亮)

  • 微信辅助解封有记录吗(微信辅助解封有次数限制吗)

    微信辅助解封有记录吗(微信辅助解封有次数限制吗)

  • 蓝牙耳机闪红灯什么意思(华为蓝牙耳机闪红灯)

    蓝牙耳机闪红灯什么意思(华为蓝牙耳机闪红灯)

  • 拉黑qq好友对方知道吗(拉黑qq好友对方还能加你吗)

    拉黑qq好友对方知道吗(拉黑qq好友对方还能加你吗)

  • iphonexs面部识别不出来(iphonexs面部识别将iphone移低一点)

    iphonexs面部识别不出来(iphonexs面部识别将iphone移低一点)

  • 别人抖音请求关注的消息记录从哪看(抖音别人请求关注是什么意思)

    别人抖音请求关注的消息记录从哪看(抖音别人请求关注是什么意思)

  • ipad太卡怎么清理(ipad有点慢怎么清理)

    ipad太卡怎么清理(ipad有点慢怎么清理)

  • gps导航系统有什么用(gps导航的好处)

    gps导航系统有什么用(gps导航的好处)

  • 剪映怎么手动添加字幕(剪映怎么手动添加滚动字幕)

    剪映怎么手动添加字幕(剪映怎么手动添加滚动字幕)

  • 怎么改淘宝背景图片(怎么修改淘宝背景颜色)

    怎么改淘宝背景图片(怎么修改淘宝背景颜色)

  • 苹果11来电闪光灯怎么开启(苹果11来电闪光灯怎么设置)

    苹果11来电闪光灯怎么开启(苹果11来电闪光灯怎么设置)

  • 淘宝的双十一活动什么时候开始(淘宝的双十一活动仍喵糖是怎么玩的)

    淘宝的双十一活动什么时候开始(淘宝的双十一活动仍喵糖是怎么玩的)

  • vsco7天试用还还会扣费吗(vsco7天试用后)

    vsco7天试用还还会扣费吗(vsco7天试用后)

  • 腾讯地图如何修改名称(腾讯地图如何修改店铺图片)

    腾讯地图如何修改名称(腾讯地图如何修改店铺图片)

  • 华为p20pro快充设置(华为p20pro快充怎么开启)

    华为p20pro快充设置(华为p20pro快充怎么开启)

  • 抖音人脸标准测试在哪(抖音人脸测试有几个儿女)

    抖音人脸标准测试在哪(抖音人脸测试有几个儿女)

  • 如何申请域名(如何申请域名步骤)

    如何申请域名(如何申请域名步骤)

  • Mac系统频繁弹出本地项目钥匙串提示怎么办?(macbook自动弹出页面)

    Mac系统频繁弹出本地项目钥匙串提示怎么办?(macbook自动弹出页面)

  • 任务栏变宽了怎么办?(任务栏变宽了怎么调回来win11)

    任务栏变宽了怎么办?(任务栏变宽了怎么调回来win11)

  • UNS.exe是什么进程?UNS.exe会是病毒吗?UNS.exe程序文件介绍(un system)

    UNS.exe是什么进程?UNS.exe会是病毒吗?UNS.exe程序文件介绍(un system)

  • 修改织梦CMS默认模板中的颜色字体(织梦cms为什么不维护了)

    修改织梦CMS默认模板中的颜色字体(织梦cms为什么不维护了)

  • 企业纳税信用等级评定标准
  • 中级税务师是什么
  • 赠品要做视同销售申报纳税吗
  • 话费充值发票可以入账吗
  • 向银行办理托收手续记什么科目
  • 什么是非关联方交易
  • 租出非专利技术的摊销额会导致营业利润减少吗
  • 业务招待费超支原因怎么写
  • 财产租赁所得适用什么税率
  • 非居民企业所得税核定利润率
  • 电子发票不小心删掉了怎么办
  • 全国失信人员信息
  • 个人收到支票如何做账
  • 小微企业的特点及经营模式举例
  • 企业固定资产损失包括
  • 资本公积转增资本个人股东是否纳税
  • 发票报销增值税
  • 医院职工福利费使用范围和标准是多少
  • 客户汇公司账户怎么汇
  • 哪些发票可以开专票
  • 鸿蒙系统通知栏和控制
  • 当月交当月社保费会计分录
  • 银行承兑汇票质押贷款骗局
  • php-msf
  • PHP:mb_output_handler()的用法_mbstring函数
  • 营改增后哪些费用可以抵扣
  • 乌鲁米耶湖春季湖水更深
  • 企业所得额不能扣除
  • 如何加强企业应收应付款管理论文
  • 莫纳皮拉
  • 解决的英文
  • 职工教育经费可以以后年度结转吗
  • php读取文件
  • 农产品抵扣进项税额的规定
  • 累计折旧在贷方还是借方
  • resnet+unet
  • 建筑修缮服务税率
  • 谷歌浏览器无法安装
  • php判断文件是否存在的函数
  • 土地增值税预征税率一览表
  • python如何在一个文件中运行另一个文件
  • mysql常用优化方案
  • 研发费用凭证是什么样
  • 如何恢复sql server误删除的数据库
  • 自产货物用于抵偿债务
  • 企业设立账簿
  • 商品组装后出售怎么做账
  • 2020年混凝土增值税税率是多少
  • 存货报废进项税转出分录
  • 发票上的印记能去掉吗
  • 进出口 外汇
  • 残保金属于职工社保吗
  • 购车买的保险分别是什么
  • 其他业务收入的二级科目
  • 施工企业简易计税的依据
  • 长期合同价格怎么定
  • 借款收据怎样才有法律效力
  • 印花税是本月交上个月的吗
  • 财务费用范畴
  • 工作地变更社保卡怎么办
  • 工业用地使用年限30年与50年有什么区别
  • 会计一般月初忙几天
  • 工业企业存货发出计价的方法
  • sqlserver按时间查询
  • 微软推出windows1
  • ubuntu20.04怎么用
  • 微软发布新系统
  • 从五方面解析Linux防火墙框架问题
  • win7更改ip地址后有网络无法上网
  • win7电脑全屏
  • Unity3D游戏开发标准教程
  • shell定时删除指定目录下的文件夹
  • python编写下载器
  • javascript的引用类型
  • Unity for Absolute Beginners(一)
  • js跨域的几种方法
  • 在windows中快捷键的作用
  • 税务机关一案双查管理办法
  • 专利转让个人所得税转换为经营所得
  • 20 百望九赋税控盘管理员默认指令多少?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设