Vueフィルターの使い方

Vueフィルターの使い方

概要

vue2.0 より前は、組み込みフィルターがありました。2.0 では組み込みフィルターはありませんが、フィルターをカスタマイズできます。

Vue フィルターに関しては、公式ドキュメントに次のように記載されています。

Vue.js を使用すると、一般的なテキストの書式設定に使用できる独自のフィルターを定義できます。フィルターは、二重中括弧補間と v-bind 式の 2 つの場所で使用できます (後者は 2.1.0 以降でサポートされています)。フィルターは、JavaScript 式の最後に「パイプ」記号で示されて追加する必要があります。

つまり、フィルターはデータをフォーマットするために使用される関数です。フィルターは元のデータを変更しません。フィルターの機能は、データをフィルター処理すること、つまり、データ形式や状態変換などを変更して、データを処理して処理済みのデータを返すことです。

フィルターには2種類あります

  • コンポーネント内のフィルター (コンポーネント内で有効)
  • グローバル フィルター (すべてのコンポーネントで共有)

フィルターの定義

最初のパラメータはフィルターの名前です。

2 番目のパラメーターはフィルターの機能です (vue が定義されていない場合、この文字列が何であるか、何をするかはわかりません)。

フィルター機能

  • 宣言関数 (データ、argv1、argv2...) {}
  • 最初のパラメータはフィルタリングするデータ、つまり呼び出し時のパイプ文字の左側の内容です。
  • 2 番目以降のパラメータは、フィルターを呼び出すときに渡されるパラメータです。

フィルターの使用

最初に登録して、後で使用してください

コンポーネントでは、filters:{ filter name: fn } は return in fn を通じて最終データを返します。

グローバル Vue.filter('filter name',fn) は、fn の return を通じて最終データを返します。

{{ data | フィルター名 }} を使用します

// フィルターを使用する場合は、区切りとしてパイプ記号 ( | ) を追加する必要があります。フィルター名は、テキストの機能であるパイプ記号 | の右側にあります。
<!-- 二重中括弧内 -->
{{ メッセージ | フィルター名}}
​
<!-- `v-bind` 内 -->
<div v-bind:id="id | フィルター名"></div>

カスタムグローバルフィルター

Vue.filter('filter name', function(val) { // val は処理されるデータを表します // フィルタービジネスロジック、戻り値が必要です})
​
<div>{{ メッセージ | フィルター名}}</div>
<div v-bind="msg | フィルター名"></div>

ローカルフィルター

データ () {
    戻る {
        メッセージ: 'こんにちは世界'
    }
},
//プライベートローカルフィルターを定義します。フィルターは現在のvueオブジェクトでのみ使用できます: {
    dataFormat: (msg, a) => { // msg はフィルタリングされるデータを表し、a は入力パラメータを表します return msg + a;
    }
}
​
<p>{{ msg | dataFormat('!')}}</p> // 結果: hello world!

予防

1. グローバルに登録する場合は s なしのフィルターですが、コンポーネントフィルターは s 付きのフィルターです。 s なしで記述してもエラーにはなりませんが、フィルターの効果はありません。

2. グローバルフィルタとローカルフィルタの名前が重複している場合、近接性の原則に基づいて呼び出されます。つまり、ローカルフィルタはグローバルフィルタよりも先に呼び出されます。

3. 式では複数のフィルターを使用できます。実行順序は左から右です。前のフィルターの結果が次のフィルターの処理データとして使用されるので、使用順序に注意してください。

Vue に精通している人は、フィルターがメソッド、計算、ウォッチなどのデータ処理の目的を達成できる場合があることを知っているでしょうが、フィルターは元の値を変更できないため、それらを置き換えることはできません。フィルターの内部構造が特に複雑な場合は、計算プロパティとして記述することを検討できます。計算プロパティ自体にはキャッシュがあり、再利用性が高いのに対し、フィルターは通常、いくつかの単純な操作を実行するために使用されます。

実際の開発では、ローカル フィルターよりもグローバル フィルターの方が広く使用されています。率直に言うと、なぜフィルターを使用するのでしょうか。実は、関数を使用するのと同じです。一部のメソッドは他のコンポーネントで使用できるようにカプセル化されており、これにより、呼び出しがより便利で高速になります。

ご存知のとおり、グローバル フィルターは main.js で定義されます。ただし、プロジェクトが大きすぎてフィルターが複数ある場合、main.js はコードの塊になります。プロジェクトをモジュール化するには、これらのフィルターを均一に保存するための特別なディレクトリを用意し、処理関数を抽出して .js ファイルに配置するのが最適です。サンプル コードを以下に示します。

例1(ローカルフィルタ)

時刻または日付をフォーマットし、指定された桁数を入力し、数値が1桁未満の場合は0を入力します。

// filter/index.js ファイルエクスポートデフォルト {
    日付形式: 値 => {
        const dt = 新しい日付(値 * 1000)
    
        定数 y = dt.getFullYear()
        const m = (dt.getMonth() + 1 + '').padStart(2, '0') // .padStart(指定された桁数、"埋める符号または値")
        定数 d = (dt.getDay() + '').padStart(2, '0')
        
        定数 hh = (dt.getHours() + '').padStart(2, '0')
        定数mm = (dt.getMinutes() + '').padStart(2, '0')
        定数ss = (dt.getSeconds() + '').padStart(2, '0')
        
        `${y}-${m}-${d} ${hh}:${mm}:${ss}` を返します
    }
}
​
// .vue ファイルでローカル フィルターを使用する <script>
    '../filter' からフィルターをインポートします
​
    エクスポートデフォルト{
        …… 
        フィルター: { ...フィルター },
        データ() {
            戻る {}
        }
    }
</スクリプト>
​
<div> 日付: {{ date | dateFormat }} </div>

例2(グローバルフィルタ)

一般的な辞書項目のエコー: たとえば、性別、男性または女性、または一般的な選択の場合、バックエンドから送信されるデータは0または1であり、ページに男性または女性、またははいまたはいいえを表示する必要があります。

// constants/dictionary.js ファイル​
エクスポートconst GENDER_MENU = [
    { コード: 0、ラベル: '男性'},
    { コード: 1、ラベル: '女性'}
];
​
エクスポートconst COMMON_MENU = [
    { コード: 0、ラベル: 'いいえ'},
    { コード: 1、ラベル: 'はい'}
];
​
エクスポートデフォルト{
    性別メニュー、共通メニュー
}

filter/dict.js ファイル

// filter/dict.js ファイル​
'../constants/dictionary' から Dict をインポートします
​
エクスポートconstgenderMenu = {
    関数: 値 => {
        const ターゲット = Dict.GENDER_MENU.filter(item => {
            戻り値 item.code = value;
        })
        target.length ? target[0].label : value を返します。
    }
}
​
エクスポートconst commonMenu = {
    関数: 値 => {
        const ターゲット = Dict.COMMON_MENU.filter(item => {
            戻り値 item.code = value;
        })
        target.length ? target[0].label : value を返します。
    }
}

filter/index.js ファイル

// filter/index.js ファイル​
import * as filters from './dict' // フィルター関数をインポートする​
const インストール = Vue => {
    // インポートされたフィルターはオブジェクトです。Object.keys() メソッドを使用してキーの配列を取得します。データを反復処理し、キーをグローバル フィルターの名前として使用します。キーの後には対応する処理関数が続きます。このようにして、グローバル フィルターを任意のコンポーネントで使用できます。Object.keys(filters).forEach(key => {
        Vue.filter(キー、フィルター[キー].func)
    })
    /*
    for(const _filter in フィルター) {
        Vue.filter(`${_filter}`, フィルター[_filter].func)
    } */
}
​
デフォルトのエクスポート インストール

main.js ファイル

// main.js ファイル​
……
'./../filter/index' からフィルターをインポートします
Vue.use(フィルター)
……

.vue ファイルでのグローバル フィルターの使用

// .vue ファイルでグローバル フィルターを使用する
<p>性別: {{ gender | genderMenu }}</p>

以上がvueフィルターの使い方の詳細です。vueフィルターの詳細については、123WORDPRESS.COMの他の関連記事もご覧ください。

以下もご興味があるかもしれません:
  • VUEでフィルターを使用する方法
  • Vueフィルターとディレクティブがこれにアクセスする問題の詳細な説明
  • Vueでフィルターを使用するときにこれが未定義になる問題
  • vueフィルターがこのオブジェクトを取得できない問題を解決する
  • Vue のデータとイベントのバインディングとフィルターの詳細な説明
  • Vue のフィルターの適用シナリオの詳細な説明
  • Vue フィルターの 4 つの使用方法のまとめ

<<:  Spark RDD をデータフレームに変換し、それを MySQL に書き込む例

>>:  Nginx のタイムドログカットの詳細な説明

推薦する

MySQL 5.7.20 解凍版のインストールとルートパスワードの変更に関するチュートリアル

1. MySQL アーカイブ (解凍版) をダウンロードするURL: https://downloa...

Vue.jsの機能コンポーネントに関する包括的な理解

目次序文React 関数コンポーネントVue (2.x) の機能コンポーネント🌰 例: el-tab...

Docker で Selenium グリッド分散環境を構築する実用的な方法

最近、Zoom ビデオ会議をテストし、100 人が同時に会議に参加することをシミュレートする必要があ...

Linux で毎日データベースの自動バックアップを設定する方法

この記事では、Centos7.6 システムと Oracle11g を例に挙げます。 1. まずデータ...

vue3.0共通コンポーネントの自動インポート方法の例

1. 前提条件インポートには require.context メソッドを使用します。vite で作成...

vue-cli でレスポンシブ レイアウトを実装する方法

フロントエンド開発を行うと、PCとモバイル端末の適応に必然的に直面することになります。このような問題...

Linux で ping は成功するがポートが利用できない問題を解決する方法

ping は成功したがポートにアクセスできない場合のポート可用性検出の説明ポート可用性検出ツールの紹...

Vueのフロントエンドとバックエンドのデータのやり取りと表示を理解する方法

目次1. 技術概要2. 技術的な詳細1. インターフェースからバックエンドデータを取得する2. フロ...

Docker で Java 8 Spring Boot アプリケーションを開発する方法

この記事では、ローカル マシンに Java 8 をインストールせずに、Java 8 を使用して簡単な...

kindとDockerを使用してローカルKubernetes環境を起動する

導入Kubernetes を使い始めるのに丸一日を費やしたことはありませんか?最近登場したいくつかの...

vmware14Pro で Ubuntu システム インターフェイスが小さすぎる問題の解決方法の詳細な説明

1. 動作環境vmware14proウブントゥ 16.04LTS 2. 問題の説明vmware14P...

MySQL 5.7 の /etc/my.cnf パラメータの紹介

以下は、mysql 5.7 の /etc/my.cnf の一般的なパラメータの一部です。これらを自分...

VMware Workstation と vSphere 間で仮想マシンを移行する (画像とテキスト)

1. Workstationで仮想マシンのハードウェアバージョンを変更するWorkstation ...

JSベースの手持ち連射機能+テキスト揺れ特殊効果コードの簡単実装

少し前にTikTokで揺れる連打が流行っていたので真似してみることにしました。さっそく効果をみてみま...