vue+elementui子组件实时监听父组件数据变化在处理成无限循环问题

前提:子组件实时监听父组件保存方法后返回的数据 (数组),并拿到其数据渲染子页面上(多组表单形式)

报错信息:You may have an infinite update loop in watcher with expression “financials1”

原因

:子组件中监听父组件传入的数据financials1 直接在this.getFiancialInfo()里处理 在其处理的过程中会使financials1里的值改变 从而又触发了监听 进入死循环

解决方法

1.在data定义一个存放父组件传给子组件数据的空数组
在这里插入图片描述
2.将监听的数据 赋值给定义的数组,this.getFiancialInfo()为处理数据并渲染在页面上的方法
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你可以这样实现: 1. 在Vue中,通过v-for指令循环渲染标签页和侧边栏内容,比如: ```html <!-- 标签页 --> <el-tabs v-model="activeTab"> <el-tab-pane v-for="(tab, index) in tabs" :label="tab.label" :name="index" :key="index"></el-tab-pane> </el-tabs> <!-- 侧边栏 --> <el-menu :default-active="activeMenu" class="el-menu-vertical-demo" @select="handleMenuSelect"> <el-submenu v-for="(menu, index) in menus" :index="index" :key="index"> <template slot="title">{{menu.title}}</template> <el-menu-item v-for="(subMenu, subIndex) in menu.subMenus" :index="`${index}-${subIndex}`" :key="`${index}-${subIndex}`">{{subMenu.title}}</el-menu-item> </el-submenu> </el-menu> ``` 2. 在Vue组件中,定义标签页和侧边栏的数据和方法,比如: ```javascript export default { data() { return { tabs: [ { label: '标签页1' }, { label: '标签页2' }, { label: '标签页3' } ], activeTab: '0', // 默认选中第一个标签页 menus: [ { title: '侧边栏1', subMenus: [ { title: '侧边栏1-1', content: '侧边栏1-1的内容' }, { title: '侧边栏1-2', content: '侧边栏1-2的内容' } ] }, { title: '侧边栏2', subMenus: [ { title: '侧边栏2-1', content: '侧边栏2-1的内容' }, { title: '侧边栏2-2', content: '侧边栏2-2的内容' } ] }, { title: '侧边栏3', subMenus: [ { title: '侧边栏3-1', content: '侧边栏3-1的内容' }, { title: '侧边栏3-2', content: '侧边栏3-2的内容' } ] } ], activeMenu: '0-0' // 默认选中第一个侧边栏 } }, methods: { handleMenuSelect(index) { // 处理侧边栏选中事件,获取选中菜单对应的内容 const [menuIndex, subMenuIndex] = index.split('-') const content = this.menus[menuIndex].subMenus[subMenuIndex].content // 根据选中的侧边栏内容,新建一个标签页 this.tabs.push({ label: index, content }) this.activeTab = `${this.tabs.length - 1}` } } } ``` 3. 在Vue组件中,通过监听标签页的切换事件,动态改变侧边栏和页面内容,比如: ```javascript export default { watch: { activeTab(newIndex, oldIndex) { // 标签页切换时,更新侧边栏和页面内容 const { content } = this.tabs[newIndex] if (content) { const [menuIndex, subMenuIndex] = this.activeMenu.split('-') const newContent = this.menus[menuIndex].subMenus[subMenuIndex].content if (newContent !== content) { this.tabs[newIndex].content = newContent } } } } } ``` 这样就可以实现点击顶部标签栏,定位到对应侧边栏,点击侧边栏的某一项,显示对应的页面内容了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值