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

  • huawei p30 pro手机壳(huawei p30 pro)(华为P30pro手机屏幕触屏失灵怎么恢复)

    huawei p30 pro手机壳(huawei p30 pro)(华为P30pro手机屏幕触屏失灵怎么恢复)

  • 手机QQ如何退出(手机qq如何退出电脑qq)

    手机QQ如何退出(手机qq如何退出电脑qq)

  • 三星旗舰手机有哪几款(三星旗舰手机有哪些还是lcd屏)

    三星旗舰手机有哪几款(三星旗舰手机有哪些还是lcd屏)

  • 爱奇艺怎么设置长按屏幕快进(爱奇艺怎么设置自动播放下一集)

    爱奇艺怎么设置长按屏幕快进(爱奇艺怎么设置自动播放下一集)

  • 淘宝卖家星级标准(淘宝店铺卖家星级标准)

    淘宝卖家星级标准(淘宝店铺卖家星级标准)

  • 华为p10耳机模式怎么取消(华为p10耳机模式只有左边有声音)

    华为p10耳机模式怎么取消(华为p10耳机模式只有左边有声音)

  • 微信号找不回来钱包钱怎么办(微信号找不回来里面的钱怎么办)

    微信号找不回来钱包钱怎么办(微信号找不回来里面的钱怎么办)

  • 为什么苹果x弄不了动态壁纸(为什么苹果x还那么贵)

    为什么苹果x弄不了动态壁纸(为什么苹果x还那么贵)

  • 华为平板m6与m5的对比区别在哪(华为平板m6与matepad区别)

    华为平板m6与m5的对比区别在哪(华为平板m6与matepad区别)

  • 华为p30卡顿是怎么回事(华为p30卡顿怎么解决办法)

    华为p30卡顿是怎么回事(华为p30卡顿怎么解决办法)

  • ipad3和ipad4的区别(ipad3与ipad4体验差别)

    ipad3和ipad4的区别(ipad3与ipad4体验差别)

  • 手机怎么记考勤(手机怎么记考勤?)

    手机怎么记考勤(手机怎么记考勤?)

  • 淘宝店铺几颗心升一钻(淘宝店铺几颗心是一个钻)

    淘宝店铺几颗心升一钻(淘宝店铺几颗心是一个钻)

  • 手机银行怎么交学费(手机银行怎么交短信通知费)

    手机银行怎么交学费(手机银行怎么交短信通知费)

  • 抖音200粉丝能开播吗(抖音200个粉丝)

    抖音200粉丝能开播吗(抖音200个粉丝)

  • 微博怎么看自己的浏览记录(微博怎么看自己的互动榜)

    微博怎么看自己的浏览记录(微博怎么看自己的互动榜)

  • 美图秀秀拼接长图模糊(美图秀秀拼接长图加文字)

    美图秀秀拼接长图模糊(美图秀秀拼接长图加文字)

  • 苹果xsmax多重(苹果xsmax)

    苹果xsmax多重(苹果xsmax)

  • ps怎么填空白(ps怎么填充白色区域)

    ps怎么填空白(ps怎么填充白色区域)

  • ipada1474是air几(ipada1474是air1还是2)

    ipada1474是air几(ipada1474是air1还是2)

  • apple watch series4可以玩游戏吗

    apple watch series4可以玩游戏吗

  • 三星手机怎样录频(三星手机怎样录入门禁卡)

    三星手机怎样录频(三星手机怎样录入门禁卡)

  • 苹果8有nfc吗(苹果8手机是否有nfc功能)

    苹果8有nfc吗(苹果8手机是否有nfc功能)

  • 如何挑主板?教你如何判断主板好坏(挑主板要注意什么)

    如何挑主板?教你如何判断主板好坏(挑主板要注意什么)

  • 安装Win11一直转圈怎么办?安装Win11一直转圈解决方法(安装win11一直转圈要多久?)

    安装Win11一直转圈怎么办?安装Win11一直转圈解决方法(安装win11一直转圈要多久?)

  • photo-sphere-viewer中文文档

    photo-sphere-viewer中文文档

  • 区块链开发完整指南。如何开发一款区块链项目?(区块链技术开发入门)

    区块链开发完整指南。如何开发一款区块链项目?(区块链技术开发入门)

  • 所得税清算扣除比例
  • 金税盘软件
  • 事业单位长期股权投资持有期间被投资单位
  • 运输企业内账
  • 个税申报错误已过申报期怎么修改
  • 资产负债表两边不平衡的原因
  • 购买工业用地税费
  • 金蝶软件预收账款明细
  • 长期股权投资权益法下初始投资成本
  • 非独立核算的分公司怎么做账
  • 新申请的增值税怎么申报
  • 房租增值税专用发票和普通发票的税率
  • 逃避缴纳税款征管法第几条
  • sd标准差是什么意思
  • 专票入账暂不抵扣如何申报
  • 无形资产和固定资产计提折旧的时间
  • 中央非税收入统一票据怎么做账
  • 外商投资企业补税政策
  • 财务费用属于什么会计科目类别
  • 公司支付给个人的货款怎么入账
  • 以前年度记账错误
  • 材料验收入库的会计科目
  • 公司对项目的资金支持
  • 会员充值增送如何取消
  • 内部职工销售佣金计入
  • 工资现金发放的零头入账
  • mac book air文件夹怎么重命名
  • 税收滞纳金能不能超过本金
  • 为什么我的win10
  • Win10怎么清除系统
  • windows7如何格式化恢复出厂设置
  • 电脑机箱前面耳机的WIN10系统没有声音怎么办
  • 触电了该怎么做
  • uniapp示例
  • php提示框
  • php redis实现秒杀思路
  • 研发费用怎样进项抵扣
  • 有限公司股权转让的规定最新
  • mybatis isnotempty标签
  • java 日志系统
  • java泛型简单例子
  • discuz隐藏查看
  • hashmap resize源码
  • 资产负债表中应收账款的计算公式
  • 怎么查看代理记账协议终止情况
  • mysql union or
  • 房地产企业印花税计入什么科目
  • Mysql数据库分库分表语句
  • 公司支付宝账户怎么管理
  • 固定资产盘盈为什么计入盈余公积
  • 预付房租计入长期待摊费用吗
  • 购买加油卡需要什么证件
  • 飞机票电子发票可以抵扣进项税吗
  • 长期应收款是否计提坏账准备
  • 新会计准则2021执行科目
  • mysql分区语句
  • mysql error1418
  • sql null替换
  • mysql5.7.27安装
  • win10开机出现onekey ghost
  • Win2003 上配置 VPN + NAT共享上网的步骤分享
  • win2003注册表空间不足
  • 一键u盘安装系统
  • mac不同账户如何共享文件
  • gacrunner.exe是什么
  • win7开机进入桌面黑屏但有鼠标
  • windos10正式版
  • react native 应用
  • cocos2dx官方教程
  • Node.js中的全局变量有哪些
  • 安卓状态栏宽度
  • 我置顶你也只顶你
  • jquery checkbox无法用attr()二次勾选问题的解决方法
  • javascript如何学
  • jquery实战
  • 个体工商户税务年报网上怎么申报
  • 为什么电子发票没有监制章
  • 河南省医保网上报销流程
  • 贵州省国家税务局电子税务局官网
  • 房地产的土地增值税怎么交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设