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

  • 网站外链推广必须坚持的4大原则(外链推广是什么意思)

    网站外链推广必须坚持的4大原则(外链推广是什么意思)

  • 192.168.203.1同屏器设置(192.168.203.1同屏器设置没有声音)

    192.168.203.1同屏器设置(192.168.203.1同屏器设置没有声音)

  • 美团买菜在哪里找(美团买菜在哪里发货)

    美团买菜在哪里找(美团买菜在哪里发货)

  • 快手名字怎么取(快手名字怎么取才好听)

    快手名字怎么取(快手名字怎么取才好听)

  • 荣耀30手机有多重(荣耀30手机有多少克)

    荣耀30手机有多重(荣耀30手机有多少克)

  • 红米10x 4g版跑分是多少

    红米10x 4g版跑分是多少

  • 12123支付页面打不开(12123支付成功)

    12123支付页面打不开(12123支付成功)

  • 华为屏幕黄斑原因(华为手机屏幕黄色斑块)

    华为屏幕黄斑原因(华为手机屏幕黄色斑块)

  • 华为手机怎样下载铃声到手机上(华为手机怎样下载app软件)

    华为手机怎样下载铃声到手机上(华为手机怎样下载app软件)

  • 戴尔5490和5498区别(戴尔笔记本电脑5498和5490的区别)

    戴尔5490和5498区别(戴尔笔记本电脑5498和5490的区别)

  • 可以给siri改名吗(siri可以改名嘛)

    可以给siri改名吗(siri可以改名嘛)

  • 购买记录待处理要多久?(appstore购买记录待处理)

    购买记录待处理要多久?(appstore购买记录待处理)

  • 放大器wifi漫游要开吗(wifi放大器很慢)

    放大器wifi漫游要开吗(wifi放大器很慢)

  • 华为手机无法横屏播放视频(华为手机无法横屏怎么办)

    华为手机无法横屏播放视频(华为手机无法横屏怎么办)

  • 抖音直播如何关闭同城(抖音直播如何关闭声音)

    抖音直播如何关闭同城(抖音直播如何关闭声音)

  • appleid因为安全原因已被停用如何启用(AppleID因为安全问题停用了可以刷机解锁嘛)

    appleid因为安全原因已被停用如何启用(AppleID因为安全问题停用了可以刷机解锁嘛)

  • 多媒体是指(多媒体是指什么的载体)

    多媒体是指(多媒体是指什么的载体)

  • 键盘转换中文用哪个键(键盘上转换中文)

    键盘转换中文用哪个键(键盘上转换中文)

  • 美版iwatch中国能用吗(apple watch美版在中国能用么)

    美版iwatch中国能用吗(apple watch美版在中国能用么)

  • 腾讯实名注册怎么修改(腾讯实名注册怎么注销)

    腾讯实名注册怎么修改(腾讯实名注册怎么注销)

  • 艺术字上下型环绕怎么设置(艺术字上下型环绕水平居中)

    艺术字上下型环绕怎么设置(艺术字上下型环绕水平居中)

  • qq怎么换气泡(Qq怎么换气泡)

    qq怎么换气泡(Qq怎么换气泡)

  • 卖家同意换货会预留库存吗(卖家同意换货会怎么样)

    卖家同意换货会预留库存吗(卖家同意换货会怎么样)

  • 快手怎么找别人的视频(快手怎么找别人代付)

    快手怎么找别人的视频(快手怎么找别人代付)

  • 苹果笔记本i5够用吗(2020款苹果笔记本i5)

    苹果笔记本i5够用吗(2020款苹果笔记本i5)

  • 小米9有耳机吗(小米9带耳机吗)

    小米9有耳机吗(小米9带耳机吗)

  • 快手能看到对方的粉丝吗(快手能看到对方在线说明自己没有被拉黑吧)

    快手能看到对方的粉丝吗(快手能看到对方在线说明自己没有被拉黑吧)

  • 5g发明者是谁(5g的发明者)

    5g发明者是谁(5g的发明者)

  • 屏幕镜像一直正在查找(屏幕镜像一直正在连接)

    屏幕镜像一直正在查找(屏幕镜像一直正在连接)

  • chatgpt 无法登录报错Access denied、OpenAl‘s services are not available in yourcountry. (error=unsupported )(无法登陆p.to)

    chatgpt 无法登录报错Access denied、OpenAl‘s services are not available in yourcountry. (error=unsupported )(无法登陆p.to)

  • 已认证进项税转出怎样做账务处理
  • 销售财务软件的公司怎么做账
  • 注会其他专业可以考吗
  • 公司租用个人房屋如何记账
  • 建筑公司收到劳务发票会计分录
  • 物业费的税金是否向业主收取
  • 个税代扣代缴手续费返还 申请
  • 小规模纳税人季度申报
  • 员工报销汽油费可以抵扣进项税吗
  • 已投入使用的机器设备才能计提折旧对吗
  • 资产减值损失负数是好是坏
  • 政府发的补助金用不用交税
  • 税局代开的法律顾问费能否抵扣
  • 一般纳税人出售固定资产税率
  • 购买银行理财产品被骗怎么办
  • 活动策划费可以开专票吗
  • 小规模企业增值税税率
  • 企业管理服务公司是中介吗
  • 企业所得税固定资产折旧计算
  • 非贸易企业代扣代缴增值税和附加税如何做账?
  • 员工给公司代垫的款项分录
  • win10怎么清空
  • 去年的发票今年能用吗
  • 职工教育经费的扣除限额
  • 一键ghost有用吗
  • 生产经营所得个税表
  • 预测“叫停GPT-4后续AI大模型”后续:这是一个囚徒困境
  • 帮公司垫付的钱怎么要
  • 处置子公司属于调整事项吗
  • 递延所得税资产账务处理
  • wirecut.exe
  • 工业企业应付账款周转率多少合适
  • 购入专利权属于
  • 权益工具与金融负债的转换
  • 基于chatGPT设计卷积神经网络
  • 前端cgi
  • 命令default
  • cdr快捷键命令大全
  • php错误和异常
  • 车票如何抵扣增值税税率
  • 上一年度企业所得税汇算清缴
  • 物权转移手续是什么
  • 增值税发票超过一年未抵扣
  • mongodb 安装
  • 工会经费计算表
  • 怎样根据税负率计算税额
  • 农产品增值税免税发票怎么抵扣
  • 金蝶迷你版年结账套
  • mysql运行报错
  • mongodb reactive
  • 利润表主营业务收入怎么算
  • 工程违约金账务处理规定
  • 以前年度房租付了没计提
  • 当月预交增值税时所属期选了上期怎么办
  • 纳税评估补缴的增值税影响所得税吗
  • 分支机构企业所得税计提和缴纳数额不一致怎么办?
  • 跨年度利息收入如何调整
  • 一年以内到期的长期借款属于
  • 进项票超期未认证怎么办
  • 会计怎么做工资单
  • 外贸企业怎么开出口发票
  • sql语句连接方式
  • mysql怎么实现
  • 通过扣缴义务人申报和综合所得年度自行申报
  • ubuntu无法正常开机
  • wps2019视频
  • xp系统怎么把ie浏览器放到桌面
  • 如何配置linux
  • linux 如何查看
  • 微信小程序异步回调函数
  • nodejs获取post数据
  • c++服务器与客户端连接
  • python mypy
  • Node.js与Sails redis组件的使用教程
  • 增值税报表进项税和销项税都不填可以吗
  • 娱乐会所一般有什么
  • 下载广东省电子税务局appp
  • 请问农村自建房彩钢瓦下面修房吊什么顶好
  • 一次性收入多少要交个人所得税
  • 纪律作风如何形容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设