Computed property "activeTabId" was assigned to but it has no setter.

Computed property “activeTabId” was assigned to but it has no setter.
意思是:‘’已将计算属性“activeTabId”分配给,但它没有setter。‘’
activeTabId是通过vuex 来向模块中state取出来的,首先在 数据双向绑定的时候将 v-model=‘activeTabId’ 改为 :value=‘activeTabId’ ,如下:

<portal-tabs
     ref="tabs"
     :value="activeTabId"
     :panes="tabs"
     @tab-remove="removeTabAsync"
     @tab-click="clickTabAsync"
     @tab-contextmenu="handleTabContextmenu" />

问题 解决了 但是 在右键关闭所有的时候 ,还会出现这个报错,我觉得是因为我应该将 vuex中的 state 的 activeTabId进行更改。

。。。
<template>
  <v-contextmenu-item @click.native.stop="(vm,ev)=>{closeTabs(ev,1)}">
        关闭其他
  </v-contextmenu-item>
</template>
。。。
<script>
import { createNamespacedHelpers } from 'vuex'
const { mapState, mapActions } = createNamespacedHelpers('manager')

 methods: {
    ...mapActions(['setCurrentAsync' ]),
     closeTabs (ev, action) {
      const data = this.tabContextMenuData
      if (!data) return
      const tabId = data.id
      switch (action) {
        case 0: // close self
          this.removeTabAsync(tabId, ev)
          break
        case 1: // close other
          for (let i = this.tabs.length - 1; i >= 0; i--) {
            const tab = this.tabs[i]
            if (tab.id !== tabId) {
              this.tabs.splice(i, 1)
            }
          }
          // this.activeTabId = tabId
          this.setCurrentAsync(tabId)
          // this.updateTabsView()
          break
        case 2: // close all
          while (this.tabs.length) this.tabs.pop()
          // this.activeTabId = null
          this.setCurrentAsync(null)
          // this.updateTabsView()
          break
      }
    },
    }
</script>

问题搞定。希望对你有帮助。

发布了24 篇原创文章 · 获赞 2 · 访问量 9179

猜你喜欢

转载自blog.csdn.net/sunmeng_sunmeng/article/details/103712929