ホームページ > 記事 > ウェブフロントエンド > Vue のルーティング ジャンプが役に立たない理由と解決策について話し合う
フロントエンド テクノロジである Vue は人気のオープンソース JavaScript フレームワークとして継続的に開発されており、これを使用して独自のフロントエンド アプリケーションを構築する人が増えています。ただし、Vue の開発プロセス中に、無効なルーティング ジャンプに遭遇する人もいるかもしれません。この記事では、Vue のルーティング ジャンプが役に立たない理由とその解決策を検討します。
Vue-Router を使用する前に、まず Vue-Router をインストールし、プロジェクトにルーティングを導入する必要があります。ルートが正しくインポートされていない場合、ルートジャンプは当然無効になります。 Vue-Routerが提供する機能を利用するには、npmまたはyarnでインストールし、プロジェクト内でVue-Routerインスタンスを参照・作成する必要があります。以下は、Vue-Router を導入するコード例です。
import Vue from 'vue' import VueRouter from 'vue-router' // 在Vue实例中使用VueRouter插件 Vue.use(VueRouter) const router = new VueRouter({ mode: 'history', // 使用HTML5 History模式,去掉URL中的#号 routes: [ { path: '/', // 路由路径 component: Home // 组件,此处是Home组件 }, { path: '/about', component: About }, // ... ] }) // 在Vue实例中添加router选项 new Vue({ router, render: h => h(App) }).$mount('#app')
ルーティング初期化コードでは、リンクをクリックしたときに正しくジャンプできるように、ルーティング パスとコンポーネントの間の対応関係を定義する必要があります。配線情報が間違っているか欠落している場合、配線ジャンプは無効になります。アプリケーションのルートが正しく初期化されているかどうかは、ルートのハッシュ テーブルを通じて確認できます。
ルートを導入した後もジャンプできない場合は、ルートを手動でジャンプしてみてください。手動ジャンプを使用すると、ページのレンダリングが完了した後に Vue インスタンスがルートを動的にリセットしてジャンプの目的を達成できます。
手動ジャンプ ルーティングのサンプル コードは次のとおりです。
export default { methods: { jumpTo(path) { this.$router.push({ path }) } } }
既存の Vue コンポーネントで jumpTo
メソッドを定義します。ルート 目的のルートへのジャンプを実装するメソッド。 手動ジャンプは成功したが、
タグによるジャンプが失敗した場合は、router-link
タグが正しく使用されているかどうかを確認する必要があります。 。
は Vue-Router が提供するルーティング ジャンプ命令です。これを使用します。目的のルートへ簡単にジャンプできます。ただし、router-link
を使用する場合、ジャンプ失敗の問題が発生する可能性もあります。このとき、router-link
の使い方が正しいか確認する必要があります。 次は、
のサンプル コードです。 <pre class="brush:php;toolbar:false"><router-link to="/user">用户中心</router-link></pre>
の to
属性は、次のことを指定します。ジャンプ先のルート。その値は、ターゲット ルートを指す相対パスまたは絶対パスである必要があります。 ルーティング パスは正しいが、
をリダイレクトできない場合は、router-link# の代わりにネイティブ
a タグを使用することを検討できます。 ## 、または
router-link コンポーネントと Vue-Router バージョンの間の互換性の問題を確認してください。
ルート ナビゲーション ガードを確認する
beforeEach
、beforeResolve、および
afterEach が含まれます。これらのガードは、ルートの切り替え前、切り替え中、および切り替え後にトリガーされます。ガードのトリガータイミングと処理ロジックを正しく設定できない場合、ルートジャンプが失敗する可能性があります。
以下はルーティング ナビゲーション ガードのサンプル コードです:
router.beforeEach((to, from, next) => { if (to.path === '/login') { next() return } // 判断用户是否登录 if (store.state.isLogin) { next() return } next('/login') })このサンプル コードでは、ユーザーが
/login
ページにジャンプした場合は、直接ジャンプします。あらゆる処理を行います。ユーザーがログインしていない場合は、ログイン ページにジャンプします。ルート ジャンプが役に立たない場合は、ナビゲーション ガードが正しく設定されているかどうかを確認するか、デバッグ プロセス中にガードを一時的に無効にして問題が解決できるかどうかを確認することもできます。
router-link
コンポーネントの使用状況やナビゲーション ガードの設定に問題がないか確認したりすることが含まれます。他の配線ジャンプ関連の問題が発生した場合は、実際の状況に基づいてさまざまな解決策を試すことができます。以上がVue のルーティング ジャンプが役に立たない理由と解決策について話し合うの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。