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

  • 全国税务师考试准考证打印
  • 内含报酬率指
  • 公司向法人借款会计分录
  • 工程施工与工程结算在资产负债表里
  • 季度所得税申报表里的营业收入是什么?
  • 资产负债表上应付账款根据什么填制
  • 企业如何列支个人收入
  • 行政性罚款可以扣除吗
  • 公司一直没有做内账违法吗
  • 代扣代缴增值税纳税义务发生时间
  • 工资计提多了怎么冲
  • 验资资金转出如何做账
  • 营改增服务业税率
  • 普通发票电子发票没有章
  • 保险公司如何计算车辆折旧
  • 2018劳务费个人所得税税率表
  • 红字发票开具只能针对一份发票 不可以只冲红其中一部分吗?
  • 长期股权投资撤股怎么处理
  • 银行摘要冲账是什么意思
  • 应税货物销售额怎么计算
  • 房地产开发企业的土地使用权计入哪里
  • 库存现金进账单会计分录
  • 公司注销固定资产如何处理
  • 财务计提个人缴纳社保部分怎么记账?
  • 发票冲红后多交多少税
  • 生活补贴和节日补贴区别
  • 企业的银行利息收入要交企业所得税吗
  • 全年一次性奖金税率表
  • 库存商品入库的会计科目
  • 华为mate pro翻转静音
  • 房屋出租预收租金房产税纳税义务发生时间
  • 自产货物用于生产
  • 收到退款的会计分录
  • 留存收益怎么计算,它属于企业的什么资金?
  • php \t
  • 如何认定为软件企业
  • php能开发微信小程序吗
  • json postman
  • 中医诊所的税收分类编码
  • net python
  • 合理损耗如何计算成本
  • 农村扶贫入股分红会计分录
  • phpcms技术
  • 织梦的首页怎么换图片
  • 出口业务的会计处理
  • 个体户3万免税规定2019
  • 员工回家探亲的文案
  • 房地产增值税可以抵扣吗
  • 收到发票怎么写摘要
  • 单位举办活动
  • 股东权益合计是所有者权益总和么
  • 汇算清缴可以不调整吗
  • 关税征收方式
  • 应收账款周转率计算公式
  • 营业费用占比
  • 代扣税是不是社保
  • 机床上的配件计入什么费用
  • 公司提供给员工暂借款未还款离职
  • 生产性生物资产账务处理
  • 工程没钱也没有工资
  • 外经证是在工程所在地办理吗
  • 行政事业单位经济责任审计的主要内容
  • 财务会计与预算会计差异如何处理
  • 注册资本越多越好吗
  • 私人银行卡给公司走账有影响吗
  • freebsd怎么样
  • fedora使用
  • win7大小写提示图标
  • win7系统安全软件
  • javascript中的this
  • javascript 作用域
  • jquery给复选框赋值
  • Unity3D游戏开发培训课程大纲
  • python操作数据库语句
  • javascript:download()
  • jquery常用函数
  • jquery-easyui-1.3.3
  • 深圳税务局关于个体户开具普通发票有关问题的通知
  • 个人所得税是哪种税率
  • 昌隆鑫实业集团招聘
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设