当前位置: 首页 > article >正文

vue页面目录菜单有些属性是根据缓存读取的。如果缓存更新了。希望这个菜单也跟着更新。

父组件中有两个子组件。如果在B组件数据更新之后。A组件也跟着一起改变呢?如图如果我右边基本信息里面勾选了高血压,左侧菜单里面也要立刻出现一个高血压随访菜单,如果我取消勾选了左侧菜单就去掉。

左侧菜单的显示和隐藏的数据实际上是放在缓存里面的。所以当右侧数据改变,缓存的数据要更新。然后左侧菜单也要跟着立刻读取最新的数据。

遇到的问题和解决办法:1,怎么在B组件操作A组件呢?解决:使用provide和inject可以在父组件和祖孙组件之间通信,然后使用this.$refs.子组件的函数名。

2,缓存内容改变了但左侧菜单数据没办法及时更新。解决:不能在data里面定义获取缓存。必须重新再调用一次。

说的可能比较抽象。下面看代码

父组件

<template><div class="layout-main"><!-- 左边 --><layout-left ref="compA"></layout-left><!-- 右边 --><layout-right> </layout-right></div>
</template><script>
import layoutLeft from "./two-left.vue";
import layoutRight from "./two-right.vue";export default {provide() {return {reloadComponentA: this.reload,};},components: {layoutLeft,layoutRight,},methods: {reload() {this.$refs.compA.loadData();},},
};
</script>

layout-left组件

created() {this.getData(local.get("healthMessage").healthRecordId);
},
methods: {
//在父组件调用的是这个方法用于更新页面loadData() {this.getData(local.get("healthMessage").healthRecordId);},
//把菜单的数组对象写在methods里面getItems() { 
this.items = [{icon: "iconfont icon-changjingguanli",index: "5",title: "慢病管理",isHide:local.get("healthMessage").diabetesSign == 1 ||local.get("healthMessage").hypertensionSign == 1 ||local.get("healthMessage").copdSign == 1,subs: [{index: "/high-followup",title: "高血压随访",isHide: local.get("healthMessage")? local.get("healthMessage").hypertensionSign == 1 || "": "",},{index: "/diabetes-followup",title: "糖尿病随访",isHide: local.get("healthMessage")? local.get("healthMessage").diabetesSign == 1 || "": "",},{index: "/lung-followup",title: "慢阻肺随访",isHide: local.get("healthMessage")? local.get("healthMessage").copdSign == 1 || "": "",},],
}]}
getData(id) {

  ...这里是获取接口数据

//重新加载目录。及时更新菜单
this.getItems();
this.$set(this, "items", this.items);

}

two-right

export default {inject: ["reloadComponentA"],

    methods:{

//需要更新菜单数据时调用它执行父组件里面的reloadComponentA函数。
   local.set("healthMessage", res.data);this.reloadComponentA();

}

我使用的local.set和local.get是自己封装的。就是重新的读取缓存的。如果需要我也列下来

export default {//取数据get(key) {return JSON.parse(window.localStorage.getItem(key));},//存数据set(key, val) {window.localStorage.setItem(key, JSON.stringify(val));},//删除本地存储中数据remove(key) {window.localStorage.removeItem(key);},//清空本地存储的所有数据clear() {window.localStorage.clear();},
};

 

http://www.lryc.cn/news/2384368.html

相关文章:

  • Android开发-Application
  • 在TIA 博途中下载程序时找不到对应的网卡怎么办?
  • 《量子计算实战》PDF下载
  • Linux入门(部分基础相关知识+常用命令+权限)
  • 海拔案例分享-实践活动报名测评小程序
  • JavaWeb面试题 (一)
  • 解决Vue项目依赖错误:使用electron-vite重建
  • vue3样式穿透用法
  • Puppeteer 浏览器自动化操作工具
  • 5G 网络寻呼的信令及 IE 信息分析
  • 信奥赛CSP动态规划入门-最小硬币问题
  • cmd里可以使用npm,vscode里使用npm 报错
  • JAVA开发工具延长方案
  • CSS 浮动(Float)及其应用
  • CC53.【C++ Cont】一维前缀和
  • Python爬虫实战:研究Grab 框架相关技术
  • 每日leetcode
  • YouTube视频字幕转成文章算重复内容吗?
  • 网络学习-利用reactor实现http请求(六)
  • 云原生安全:IaaS安全全解析(从基础到实践)
  • 【IC_Design】跨时钟域的寄存器更新后锁存
  • Spring AI 之提示词
  • 亚远景-汽车软件开发的“升级之路”:ASPICE各等级说明
  • Java微服务架构:Spring Cloud全栈指南,附最新Demo源码,可独立运行!
  • 使用LLaMA-Factory微调ollama中的大模型(一)------家用电脑安装LLaMA-Factory工具
  • 支持向量机(SVM):分类与回归的数学之美
  • 手撕I2C和SPI协议实现
  • 人工智能+:职业价值的重构与技能升级
  • JVM部分内容
  • paddlehub搭建ocr服务