現在VueのSPAを作成していて、UIライブラリとして、fish-uiというものを採用しています。
メニューのレイアウトとして、ここの上から二段目の真ん中のサンプルをほとんどそのまま流用しています。
サンプルページで動作させてみると分かるかと思いますが、本来ならクリックするとactive
クラスが付与され、選択していることが分かるようになっています。ですが、router-link
で下のソースのように囲むと、routerの遷移は行われるのですが、fish-option
のクリックイベントが発火しません。
vue
1<fish-menu mode="inline" style="width: 200px;" defaultActive="3-3-0"> 2//ここから 3 <router-link to="/content"> 4 <fish-option index="0" content="Content"></fish-option> 5 </router-link> 6//ここまで 7 <fish-submenu index="1" mode="inline"> 8 <template slot="title">User</template> 9 <fish-option index="1-0" content="Jack"></fish-option> 10 <fish-option index="1-1" content="Lucy"></fish-option> 11 <fish-option index="1-2" content="Active"></fish-option> 12 </fish-submenu> 13</fish-menu>
# 試したこと
- まず
router-link
なしのfish-option
がちゃんとクラスが付与されるか → ちゃんとされる。 - vueドキュメントにあるように、tagで
fish-option
を指定 → 描画が崩れ、クリックイベントも発火しない。さらに、propsを渡せないのでtagでは無理と判断。 fish-option
内にrouter-link
を移動 → 本来slotの中に入るfish-option
のcontent
属性がrouterに上書きされ、何も表示されないようになり断念(クリックイベントは取れて、activeが付与された。)router-link
に@click.native
イベントを設定し、methodsでe.currentTarget.firstElementChild.click()
で無理やりクリックイベントを発火させる → DOM自体は取得できていたが、クリックイベントが発火しなかった。おそらく、VueコンポーネントからDOMにレンダリング後だから?
今のところ、何時間も調査してダメだったのでほぼ諦めているのですが、やはり現在地を表示する機能はあった方がいいので、もし解決策をお知りの方がいらっしゃいましたら、お教えしていただきたいです。
あなたの回答
tips
プレビュー