首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组的动态索引

数组的动态索引
EN

Stack Overflow用户
提问于 2021-09-20 03:00:44
回答 1查看 34关注 0票数 1

我是Vuejs的新手,我目前正在使用composition,所以我有一个这样的数组:

代码语言:javascript
复制
const tabs = ref([
      {
        id: 1,
        pdf: 'name1',
        ...
      },
      {
        id: 2,
        pdf: 'name2',
       ...
      },
      {
        id: 3,
        pdf: 'name3',
        ...
      },
    ])

然后我有一个像这样的div:

代码语言:javascript
复制
<div
        v-for="tab in tabs"
        :key="tab.name"
        :href="tab.href"
        class="px-12 pt-8 flex flex-col"
        :class="[tab.current || 'hidden']"
        @click="changeTab(tab)"
      >
        <div v-if="pdf != ''">
          <div class="pt-4 font-bold underline">
            <a :href="pdfSrc" target="_blank">See PDF</a>
          </div>
        </div>
      </div>

然后我使用computed来获得当前的href值,如下所示:

代码语言:javascript
复制
 props: {
    tabs: {
      type: Array as PropType<Array<any>>,
      required: true,
    },
  },



computed: {
    pdfSrc(): string {
          return `/img/modal/pdf/${encodeURIComponent(this.tabs[0].pdf)}.pdf`
        },
    }

正如你所看到的,我总是使用tabs[0],所以pdf的值总是name1,我想根据所选的标签来获取

tab方法:

代码语言:javascript
复制
setup(props) {
  

    const changeTab = (selectedTab: { id: number }) => {
      props.tabs?.map((t) => {
        t.id === selectedTab.id ? (t.current = true) : (t.current = false)
      })
    }

    return {
      changeTab,
    }
  },

如何根据当前页签将静态索引0更改为动态索引?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-20 03:29:01

我建议创建一个新的变量来跟踪所选的选项卡。

代码语言:javascript
复制
const selectedTabId = ref(0);

tabs类似,它可以在数组中向下传递,并在changeTab函数中更新该值。

代码语言:javascript
复制
props: {
 tabs: {
  type: Array as PropType<Array<any>>,
  required: true,
 },
 selectedTabId: {
     type: Number
  }
},


setup(props) {

const changeTab = (selectedTab: { id: number }) => {
   selectedTabId = selectedTab.id
  props.tabs?.map((t) => {
    t.id === selectedTab.id ? (t.current = true) : (t.current = false)
  })
}

  return {
   changeTab,
  }
 },

最后在计算中使用selectedTabId

代码语言:javascript
复制
computed: {
   pdfSrc(): string {
      return `/img/modal/pdf/${encodeURIComponent(this.tabs[this.selectedTabId].pdf)}.pdf`
    },
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69248668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档