vue3プロジェクトでkeepAliveを使う方法を詳しく解説
この記事では、Vue プロジェクトでキープアライブを使用する方法について詳しく説明します。キープアライブは Vue の組み込みコンポーネントです。その機能は、メモリの取得を消費する DOM の繰り返しレンダリングを防ぐためにコンポーネントをメモリにキャッシュすることです。スピード。みんなが助けてくれることを願っています。
一般的な使用法はコンポーネントまたはルートをキャッシュすることですが、既存の使用法である vue2.x と vue3.x の間にはいくつかの違いがあります。以下ではvue3.0におけるkeepalievの使い方を中心に説明します。
通常、ページ キャッシュ全体を構成することも、特定のコンポーネントのみがキャッシュ情報を維持できるようにすることもできます。キープアライブ ルートまたはコンポーネントが構成されている場合、作成 ->マウントされたライフ サイクルは、ページが更新されたときにのみ実行されます。第 1 章 2 回目以降にページに入るときは、ライフサイクルは変更されませんが、キャッシュ情報が読み込まれます。
1. ルーター構成キャッシュ
1)ステップ 1: App.vue の構成
vue2.x と vue3.0 があります。 App.vue 設定の違い App.vue 設定情報は次のとおりです:
vue2.x では、次のように、router-view を完全にキープアライブに配置できます:
<template> <!-- vue2.x配置 --> <keep-alive> <router-view v-if="$route.meta.keepAlive" /> </keep-alive> <router-view v-if="!$route.meta.keepAlive"/></template>
App.vue 設定vue3.0 メソッドは次のとおりです。
<template> <!-- vue3.0配置 --> <router-view v-slot="{ Component }"> <keep-alive> <component :is="Component" v-if="$route.meta.keepAlive"/> </keep-alive> <component :is="Component" v-if="!$route.meta.keepAlive"/> </router-view> </template>
ここでコンポーネントは vue の特別なコンポーネントです。:is は指定されたコンポーネントをバインドするために使用されます。ここではルートに対応するページ バインディングです。
2) 2 番目のステップ: メタ属性の追加
次のように、対応するルートにメタ属性を追加して、ページでキャッシュを使用するかどうかを設定します。これにより、ページの単純なキャッシュを実現できますが、一部のシナリオでは複雑な処理が必要になります。たとえば、ページ上の一部の情報はキャッシュから読み取る必要がなく、入力されるたびに処理する必要があります。アクティブ化されたライフ サイクルを使用して、部分的なページ更新の問題を解決できます。
3)
部分的なページの更新を実現する まず、vue のライフ サイクル、keepAlive でラップされたページのライフ サイクル、ページが更新されたときに実行されるライフ サイクルを理解します。入力された内容は :
created->mounted->activated; このうち、created->mounted は初めてページに入ったときのみ実行され、アクティブ化されたライフサイクルはページが入るたびに実行されます (特に keepAlive の場合)。ライフサイクルなので、ページが入るたびに実行される操作をこのライフサイクルに入れることができます。 次のコード:
{ path: "/keepAliveTest", name: "keepAliveTest", meta: { keepAlive: true //设置页面是否需要使用缓存 }, component: () => import("@/views/keepAliveTest/index.vue") },
実装された関数は、ユーザーが入力するたびに動的検証コードを空に設定することです。この関数は、コンポーネントをコンポーネントの外に出すなど、他の方法でも実装できます。キャッシュ (「2. コンポーネント構成キャッシュ」を参照)。
4)
ルーティング キープアライブ属性の動的設定
キープアライブ キャッシュを使い果たした後、ページのキャッシュをもうやめたり、次のページのキープアライブを設定したくなる場合があります。この時点では、meta の keepAlive 値を変更してページ キャッシュを削除できます。beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave を使用します。使用方法は次のとおりです: activated() {
// 页面每次进入将手机动态验证码置为空
this.$refs.mobPwdCode.inputValue = '';},
2. コンポーネント設定キャッシュ
1) 使用シナリオ
通常、Vue のページをキャッシュしますが、ページの特定のコンポーネントのみをキャッシュする必要がある場合や、動的コンポーネントを使用するときにコンポーネントをキャッシュする必要がある場合があります。コンポーネントコンポーネントを使用してコンポーネントを切り替えます。 2) キャッシュページ指定コンポーネントApp.vueで使用する場合、すべてのルートに対応するページがプロジェクトに対応するコンポーネントとなります。 keep-alive 次のように、コンポーネントの include または exclude 属性を使用します: includeを使用して、testKA という名前のコンポーネントをキャッシュします。
// to为即将跳转的路由,from为上一个页面路由beforeRouteLeave(to, from,+ next) { // 设置下一个路由的 meta to.meta.keepAlive = false; next();}
ルーターに対応するページで、name 属性を設定する必要があります
// APP.vue文件,将页面作为组件缓存<router-view v-slot="{ Component }"> <keep-alive include="testKA"> <component :is="Component"/> </keep-alive></router-view>
さらに、include の使用法は次のとおりです。
export default { name:'testKA',// keep-alive中include属性匹配组件name data() {return {}}, activated() { // keepalive缓存的页面每次进入都会进行的生命周期 },}
exclude の使用法は include の使用法と同じで、キャッシュされないコンポーネントを表します。さらに、キープアライブには、キャッシュされたコンポーネントの最大数を表す max 属性もあり、この数に達すると、新しいインスタンスが作成される前に、最も長い時間アクセスされていないキャッシュされたコンポーネントのインスタンスが破棄されます。作成した。
<!-- 逗号分隔字符串 --><keep-alive include="a,b"> <component :is="view"></component></keep-alive><!-- 正则表达式 (使用 `v-bind`) --><keep-alive :include="/a|b/"> <component :is="view"></component></keep-alive><!-- 数组 (使用 `v-bind`) --><keep-alive :include="['a', 'b']"> <component :is="view"></component></keep-alive>
特定のページでのコンポーネントの切り替えに使用する場合、使用法はキャッシュ ルーティングと同じですが、ページをコンポーネントにダウングレードするだけで、親コンポーネントは App.vue から対応するルーティングにダウングレードされます。ページ。
3) 概要
実際の戦闘プロセスでは、キープアライブ キャッシュ コンポーネントが見つかった場合、アプリの include 属性を使用するなど、レベルをまたいで
を使用することはできません。 .vue for name= 「a」が一致する場合、キャッシュ名「a」のサブコンポーネント (ルーティング ページ) のみと一致しますが、名前「a」の孫コンポーネント (サブページによって参照されるコンポーネント) はキャッシュできません。 。 孫コンポーネントをキャッシュする場合は、サブコンポーネント全体をキャッシュするか、サブコンポーネントでキープアライブを使用できます。キープアライブの使用手順については、公式 Web サイトにアクセスして学習できます: https://v3.vuejs.org/guide/component-dynamic-async.html#dynamic-components-with-keep-alive[関連する推奨事項:「vue.js チュートリアル
」]以上がvue3プロジェクトでkeepAliveを使う方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









vue3+vite:src は、イメージとエラー レポートと解決策を動的にインポートするために require を使用します。vue3+vite は複数のイメージを動的にインポートします。vue3。TypeScript 開発を使用している場合、イメージを導入するために require のエラー メッセージが表示されます。requireisnotdefined は使用できません。 vue2 のような imgUrl:require(' .../assets/test.png') は、typescript が require をサポートしていないため、インポートされます。そのため、import が使用されます。解決方法は次のとおりです: awaitimport を使用します

tinymce はフル機能のリッチ テキスト エディター プラグインですが、tinymce を vue に導入するのは他の Vue リッチ テキスト プラグインほどスムーズではありません。tinymce 自体は Vue には適しておらず、@tinymce/tinymce-vue を導入する必要があります。外国のリッチテキストプラグインであり、中国語版を通過していないため、公式 Web サイトから翻訳パッケージをダウンロードする必要があります (ファイアウォールをバイパスする必要がある場合があります)。 1. 関連する依存関係をインストールします npminstalltinymce-Snpminstall@tinymce/tinymce-vue-S2. 中国語パッケージをダウンロードします 3. スキンと中国語パッケージを導入します. プロジェクトのパブリック フォルダーに新しい tinymce フォルダーを作成し、

ページの部分的な更新を実現するには、ローカル コンポーネント (dom) の再レンダリングを実装するだけで済みます。 Vue でこの効果を実現する最も簡単な方法は、v-if ディレクティブを使用することです。 Vue2 では、v-if 命令を使用してローカル dom を再レンダリングすることに加えて、新しい空のコンポーネントを作成することもできます。ローカル ページを更新する必要がある場合は、この空のコンポーネント ページにジャンプしてから、再びジャンプします。 beforeRouteEnter ガードを空白のコンポーネントに配置します。元のページ。以下の図に示すように、Vue3.X の更新ボタンをクリックして赤枠内の DOM を再読み込みし、対応する読み込みステータスを表示する方法を示します。 Vue3.X の scriptsetup 構文のコンポーネントのガードには o しかないので、

Vue はブログ フロントエンドを実装しており、マークダウン解析を実装する必要があり、コードがある場合はコードのハイライトを実装する必要があります。 Vue には、markdown-it、vue-markdown-loader、marked、vue-markdown など、マークダウン解析ライブラリが多数あります。これらのライブラリはすべて非常に似ています。ここではMarkedが使用され、コード強調表示ライブラリとしてhighlight.jsが使用されます。 1. 依存ライブラリをインストールする vue プロジェクトの下でコマンド ウィンドウを開き、次のコマンド npminstallmarked-save//marked を入力して、マークダウンを htmlnpmins に変換します。

vue3 プロジェクトがパッケージ化され、サーバーに公開されると、アクセス ページに空白の 1 が表示されます。vue.config.js ファイル内の publicPath は次のように処理されます: const{defineConfig}=require('@vue/cli-service') module.exports=defineConfig({publicPath :process.env.NODE_ENV==='production'?'./':'/&

最終的な効果は、VueCropper コンポーネントのyarnaddvue-cropper@next をインストールすることです。上記のインストール値は Vue3 用です。Vue2 の場合、または他の方法を参照したい場合は、公式 npm アドレス: 公式チュートリアルにアクセスしてください。また、コンポーネント内で参照して使用するのも非常に簡単です。必要なのは、対応するコンポーネントとそのスタイル ファイルを導入することだけです。ここではグローバルに参照しませんが、import{userInfoByRequest}from'../js/api を導入するだけです。 ' コンポーネント ファイルにインポートします。import{VueCropper}from'vue-cropper&

vue3+ts+axios+pinia で無意味なリフレッシュを実現 1. まず、プロジェクト内の aiXos と pinianpmipinia をダウンロードします--savenpminstallaxios--save2. axios リクエストをカプセル化-----ダウンロード js-cookienpmiJS-cookie-s// aixosimporttype{AxiosRequestConfig , AxiosResponse}from"axios";importaxiosfrom'axios';import{ElMess

はじめに vue であれ、react であれ、複数の繰り返しコードに遭遇した場合、ファイルを冗長なコードの束で埋めるのではなく、これらのコードを再利用する方法を考えます。実際、vue と React はどちらもコンポーネントを抽出することで再利用を実現できますが、小さなコードの断片に遭遇し、別のファイルを抽出したくない場合は、それに比べて、React は同じファイル内で対応するウィジェットを宣言して使用できます。または、次のような renderfunction を通じて実装します。 constDemo:FC=({msg})=>{returndemomsgis{msg}}constApp:FC=()=>{return(
