首頁 >web前端 >前端問答 >實例講解Vue怎麼實現左側導覽列右側標籤頁功能

實例講解Vue怎麼實現左側導覽列右側標籤頁功能

PHPz
PHPz原創
2023-04-11 15:09:472298瀏覽

Vue是一款流行的JavaScript框架,它可以用來建立強大的網路應用程式。在本文中,我們將介紹如何使用Vue實作左側導覽列右側標籤頁。

首先,我們需要建立一個Vue實例,以便我們可以使用Vue的元件和指令。我們可以透過使用Vue-cli來建立一個新的Vue專案。

接下來,我們需要考慮如何實作左側導覽列。我們可以使用Vue的路由器和嵌套路由來實現這個功能。建立一個路由器和要嵌套子路由的父元件非常容易。以下是一個範例程式碼:

import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home.vue'
import Dashboard from './views/Dashboard.vue'
import Inbox from './views/Inbox.vue'
import Mail from './views/Mail.vue'

Vue.use(Router)

export default new Router({
routes: [
{
  path: '/',
  name: 'home',
  component: Home
},
{
  path: '/dashboard',
  name: 'dashboard',
  component: Dashboard,
  children: [
    {
      path: '/inbox',
      name: 'inbox',
      component: Inbox
    },
    {
      path: '/mail/:id',
      name: 'mail',
      component: Mail
    }
  ]
}
]
})

在上面的程式碼中,我們建立了一個路由器,並設定了兩個路由。第一個路由將匹配根路徑並顯示Home元件,第二個路由將匹配/dashboard路徑,並顯示Dashboard元件。 Dashboard元件有兩個子元件:Inbox和Mail。

下一步是考慮如何在右側顯示標籤頁。我們可以建立一個元件,該元件將作為每個標籤頁的容器。每個選項卡將呈現相應的元件。以下是一個範例程式碼:

<template>
<div>
  <div class="tabs">
    <ul>
      <li v-for="(tab, index) in tabs" :key="tab.name" 
  :class="{&#39;is-active&#39;: activeTab === index }" 
  @click="activeTab = index">
        {{tab.name}}
        <button class="delete is-small" @click.stop
  ="removeTab(index)"></button>
      </li>
    </ul>
  </div>
  <component v-if="tabs.length" :is="tabs[activeTab].component"></component>
  <router-view v-else></router-view>
</div>
</template>

<script>
export default {
name: 'Tabs',
props: {
  value: {
    type: Object,
    required: true
  }
},
data() {
  return {
    tabs: [this.value],
    activeTab: 0
  }
},
methods: {
  addTab(tab) {
    const index = this.tabs.findIndex(t => t.name === tab.name)
    if (index === -1) {
      this.tabs.push(tab)
      this.activeTab = this.tabs.length - 1
    } else {
      this.activeTab = index
    }
  },
  removeTab(index) {
    this.tabs.splice(index, 1)
    if (this.tabs.length === 0) {
      this.$router.push('/')
    } else if (this.activeTab === index) {
      this.activeTab = this.tabs.length - 1
    }
  }
},
mounted() {
  if (this.$route.params.id) {
    const tab = {
      name: `Mail ${this.$route.params.id}`,
      component: () =>
        import(/* webpackChunkName: "mail" */
        './Mail.vue')
    }
    this.addTab(tab)
  }
}
}
</script>

在上面的程式碼中,我們建立了一個名為"Tabs"的元件。它接受一個名為"value"的屬性,該屬性包含目前選項卡的資訊。它在標籤頁更改時將更新"activeTab"屬性。我們也定義了兩個方法addTab和removeTab,以便我們可以動態新增和移除標籤頁。

現在我們有了路由和選項卡元件,我們需要將它們合併。我們可以在Dashboard元件中使用以下程式碼:

<template>
<div class="dashboard">
  <div class="columns">
    <div class="column is-one-fifth">
      <div class="menu">
        <router-link to="/">Home</router-link>
        <router-link to="/dashboard/inbox">Inbox</router-link>
      </div>
    </div>
    <div class="column">
      <Tabs :value="{name: &#39;Dashboard&#39;, component: Dashboard}"></Tabs>
    </div>
  </div>
</div>
</template>

<script>
import Tabs from '../components/Tabs.vue'

export default {
name: 'Dashboard',
components: {
  Tabs
},
}
</script>

在上面的程式碼中,我們匯入了前面創建的Tabs元件,並在Dashboard元件中使用它。選項卡組件現在將顯示在右側。

最後,我們需要處理瀏覽器歷史記錄。當我們更改選項卡時,我們希望URL也更改。這將使用戶能夠使用瀏覽器的前進和後退按鈕導航標籤頁。我們可以使用Vue的$route物件存取目前URL,並在選項卡更改時更新URL。以下是一個範例程式碼:

methods: {
  addTab(tab) {
    const index = this.tabs.findIndex(t => t.name === tab.name)
    if (index === -1) {
      this.tabs.push(tab)
      this.activeTab = this.tabs.length - 1
      this.updateUrl(tab)
    } else {
      this.activeTab = index
    }
  },
  removeTab(index) {
    this.tabs.splice(index, 1)
    if (this.tabs.length === 0) {
      this.$router.push('/')
    } else if (this.activeTab === index) {
      this.activeTab = this.tabs.length - 1
      this.updateUrl(this.tabs[this.activeTab])
    }
  },
  updateUrl(tab) {
    this.$router.push(`/dashboard/${tab.name.toLowerCase().replace(/\s+/g, '-')}`)
    document.title = `Dashboard - ${tab.name}`
  }
}

在上面的程式碼中,我們定義了一個名為updateUrl的方法,它將更新URL。我們使用"push"方法更新URL。我們還更新了文件標題,以便更改選項卡時標題也更新。

總結

Vue是一款流行的JavaScript框架,它可以用來建立強大的網路應用程式。在本文中,我們介紹如何使用Vue實作左側導覽列右側標籤頁。我們使用了Vue的路由器和嵌套路由來實現左側導覽欄,使用了Vue元件和指令來實現標籤頁。我們也探討了瀏覽器歷史記錄如何管理。希望這篇文章可以幫助你了解Vue和Web應用程式的開發。

以上是實例講解Vue怎麼實現左側導覽列右側標籤頁功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn