使用環境
vue: ^2.5.7
element-ui: ^2.4.8
vue-router: ^3.0.1,
ルーターの設定
詳細は省きますがルーターの設定の配列部分です。nameで名前付きルートを設定した方が後々よさそうです。
router.js
const routes = [ { path: '/', name: 'dashboard', component: Dashboard }, { path: '/users', name: 'users', component: User }, { path: '/tasks', name: 'tasks', component: Task } ];
コンポーネントの設定
ナビゲーション(el-menu)部分です。
el-menu-item
のroute
にルーターで設定したname
を指定します。
基本ページ遷移したときアクティブにしてくれるのですが、初回ロードやリロード時は自動でアクティブしてくれないので、default-active
も設定します。
<el-menu :default-active="activeIndex" mode="horizontal" router> <el-menu-item index="dashboard" :route="{ name:'dashboard' }">ダッシュボード</el-menu-item> <el-menu-item index="tasks" :route="{ name:'tasks' }">タスク</el-menu-item> <el-menu-item index="users" :route="{ name:'users' }">ユーザー</el-menu-item> </el-menu>
スクリプト部分でactiveIndex
の設定をしましょう。
export default { data() { return { activeIndex: '' } }, mounted() { // 読み込まれたページをアクティブ this.activeIndex = this.$route.name; } }
実装サンプルはこちら
LaravelTodoSPA