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

  • 微信深夜模式有什么用(设置深夜模式微信)

    微信深夜模式有什么用(设置深夜模式微信)

  • 豆瓣私信过于频繁多久解禁(豆瓣私信过于频繁多久恢复)

    豆瓣私信过于频繁多久解禁(豆瓣私信过于频繁多久恢复)

  • 哔哩哔哩漫画大会员每月都送漫卷吗(哔哩哔哩漫画大理寺日志)

    哔哩哔哩漫画大会员每月都送漫卷吗(哔哩哔哩漫画大理寺日志)

  • 人像模式如何虚化背景(人像模式如何虚化背景图)

    人像模式如何虚化背景(人像模式如何虚化背景图)

  • 华硕内存超频bios设置(华硕内存超频设置)

    华硕内存超频bios设置(华硕内存超频设置)

  • 华为保险柜删除还能恢复吗(华为保险柜删除的照片在哪里)

    华为保险柜删除还能恢复吗(华为保险柜删除的照片在哪里)

  • 电脑磁盘空间不足怎么清理(电脑磁盘空间不足怎么办微信备份不了)

    电脑磁盘空间不足怎么清理(电脑磁盘空间不足怎么办微信备份不了)

  • 卡坏了怎么查服务密码(卡坏了怎样才找回电话号码)

    卡坏了怎么查服务密码(卡坏了怎样才找回电话号码)

  • 红米k30充电充满有没有指示(红米k30充电充满要多久)

    红米k30充电充满有没有指示(红米k30充电充满要多久)

  • 网上买的手机可以去实体店售后吗(网上买的手机可以去实体店贴膜吗)

    网上买的手机可以去实体店售后吗(网上买的手机可以去实体店贴膜吗)

  • 华为手机怎么输入拼音声调(华为手机怎么输入m3)

    华为手机怎么输入拼音声调(华为手机怎么输入m3)

  • 淘宝的苹果旗舰店是真的吗(淘宝的苹果旗舰店和京东的哪个是正品)

    淘宝的苹果旗舰店是真的吗(淘宝的苹果旗舰店和京东的哪个是正品)

  • 如何把苹果旧手机上的所有信息全部删除(如何把苹果旧手机照片导入安卓手机)

    如何把苹果旧手机上的所有信息全部删除(如何把苹果旧手机照片导入安卓手机)

  • 电脑自带的截图快捷键(电脑自带的截图快捷键在哪看)

    电脑自带的截图快捷键(电脑自带的截图快捷键在哪看)

  • 三星s10无线充电功率多大(三星s10无线充电器)

    三星s10无线充电功率多大(三星s10无线充电器)

  • cpu过高怎么处理(cpu过高怎么处理的步骤温度)

    cpu过高怎么处理(cpu过高怎么处理的步骤温度)

  • qq聊天界面上的耳朵是什么(qq聊天界面的空间动态如何去除)

    qq聊天界面上的耳朵是什么(qq聊天界面的空间动态如何去除)

  • 怎样恢复手机照相机(怎样恢复手机照片视频)

    怎样恢复手机照相机(怎样恢复手机照片视频)

  • 华为荣耀9lite什么型号(荣耀9lite参数配置)

    华为荣耀9lite什么型号(荣耀9lite参数配置)

  • oppo手机智能辅助在哪(oppo手机智能辅助在哪里)

    oppo手机智能辅助在哪(oppo手机智能辅助在哪里)

  • 苹果8p支持快充吗(苹果8p支持快充吗30w)

    苹果8p支持快充吗(苹果8p支持快充吗30w)

  • 480px是什么意思 (480480px是什么意思)

    480px是什么意思 (480480px是什么意思)

  • slf4j和log4j区别(log4j-over-slf4j slf4j-log4j区别)

    slf4j和log4j区别(log4j-over-slf4j slf4j-log4j区别)

  • uniapp+h5混合开发(uniapp和vue混合开发)

    uniapp+h5混合开发(uniapp和vue混合开发)

  • 如何python abs函数的返回值是什么?(abs函数python怎么用)

    如何python abs函数的返回值是什么?(abs函数python怎么用)

  • 为什么增值税不计入营业税金及附加
  • 按差额缴纳税款会计分录
  • 小规模纳税人自动升为一般纳税人条件
  • 购入不动产进项税额抵扣
  • 甲方给的工程奖项有哪些
  • 分公司小规模
  • 未完工工程如何做绩效评价
  • 完全成本法例子
  • 固定资产折旧财务
  • 收到的货款与发票数不符,怎么做账
  • 预付款属于什么结算方式
  • 两个单位同一个法人
  • 税控设备全额抵扣政策
  • 为什么要预提企业收入
  • 小型微利企业所得税优惠政策2023
  • 董事监事的报酬包括哪些
  • 会计报表指标也称为什么
  • 附加税交税依据
  • 在途物资期末借方
  • Linux如何给文件赋予内容
  • .exe文件怎么打不开
  • 财务报表未分配利润为负数
  • Win11怎么关闭自动休眠
  • won10搜索框
  • 科普笔记本电脑怎样
  • 收到短期借款会计分录怎么做
  • safe software
  • php抓取网页内容转换成json
  • 旅游费发票可以报销吗
  • 谷粒商城二十五springCloud之Sleuth+Zipkin 服务链路追踪
  • 收到投资款的会计科目怎么入账
  • 销售自己使用过的固定资产
  • react js 教程
  • opencv教程
  • 14个Python处理Excel的常用操作,非常好用
  • php加密技术
  • 注意!PHP 7中不要做的10件事
  • mkdir命令怎么用
  • 个体工商户注册资本是多少
  • 现销和赊销对利润质量的影响
  • 代扣代缴的境外收入企业所得税可以抵减吗
  • php网页上传图片并显示
  • 增值税报完了能改么
  • 微信收款和支付宝收款有啥区别
  • MSSQL2005 INSERT,UPDATE,DELETE 之OUTPUT子句使用实例
  • 软件企业研发费用
  • 房地产会计分录怎么做
  • 收到返还工会经费大于管理费用
  • 做个公司网站一般需要多少钱
  • 产品研发专利
  • 无形资产出售时累计摊销为什么在借方
  • 购电脑怎么入账
  • 小规模发票跨月冲红税款可以退回吗
  • 原材料按实际成本核算与按计划成本核算相比
  • 会计每月账务处理流程
  • 冲暂估成本能冲部分暂估吗
  • Mysql使用or如何优化
  • 如何ie8升级到10
  • xp系统必备软件
  • mac如何切换界面 快捷键
  • Mac系统中pr插件汉化
  • win8系统找不到wifi
  • secondoption是什么意思
  • cortana小娜怎么用
  • linux怎么把网卡down
  • linux bzz
  • dos命令语法
  • jquery form serialize
  • 安卓里面怎么调用方法
  • listview控件设置多个列
  • android 重启app
  • python动态网页开发教程
  • js中的div标签怎么用
  • staticlayout 换行
  • 北京中石化开增票各区网点
  • 发票查验明细怎么截屏
  • 河北电子税务局新版登录
  • 个人能拒绝公司上市吗
  • 安徽省电子税务局怎么添加办税人员
  • 劳保费如何入账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设