ホームページ > ウェブフロントエンド > フロントエンドQ&A > vueではデータ連携が禁止されている

vueではデータ連携が禁止されている

WBOY
リリース: 2023-05-25 09:46:37
オリジナル
649 人が閲覧しました

Vue は人気のある JavaScript フレームワークであり、その主な目的はフロントエンド開発をより簡単かつ迅速にすることです。 Vue フレームワークで最も一般的に使用される概念の 1 つはデータ リンケージです。これにより、アプリケーション内のデータはユーザーの動作に対して非常に敏感で動的になります。

ただし、開発者はデータ連携を禁止し、特定の条件下でのみ特定のデータの変更を許可したい場合があります。最も一般的な状況は、データ制限とフィルタリングです。

この記事では、Vue でデータ リンクを無効にする方法を紹介し、特定の特殊な状況下でのみデータ リンクをサポートすることを希望します。

1. データ連携とは

Vue におけるデータ連携とは、あるデータが変更されると、それに関連するすべてのデータも更新されることを意味します。このリンク メカニズムは、Vue の応答システムを通じて実現できます。

Vue のリアクティブ システムとは、オブジェクトを Vue インスタンスにデータとして渡すと、Vue が独自のプロパティをオブジェクトに追加して、オブジェクト内のプロパティの変更を追跡することを意味します。このプロパティが新しい値に設定されると、Vue はコンポーネントにテンプレートを再レンダリングするように通知します。

たとえば、Vue インスタンスにオブジェクトがあるとします。

data: {
  user: {
    name: 'John Doe',
    age: 30
  }
}
ログイン後にコピー

コードを通じて user.age の値を更新すると、Vue は次の値を自動的に更新します。コンポーネントの 2 つの場所:

  1. このプロパティが表示される場所;
  2. このプロパティに依存するすべての電卓プロパティ。
#これがデータ連携です。

user.age が変更されると、プロパティ自体が変更されるだけでなく、それに関係する他のプロパティや計算機のプロパティも更新されます。

2. データ連携が禁止されるシナリオ

データ連携は非常に便利ですが、時には負担になることもあります。

1. データ フィルタリング

データ内の一部のコンテンツをフィルタリングする必要がある場合、データ リンケージの無効化が必要になる場合があります。たとえば、入力ボックスに数字のみを入力し、数字以外の文字を受け入れたくない場合があります。この例では、入力ボックスの v-model を設定すると、すべての入力が文字列になるため、要件を満たしません。これを変換してから、JavaScript コードを通じて処理する必要があります。

2. データが特定の状態になることを制限する

特定の条件下でのみデータの変更を許可したい場合があります。たとえば、ユーザーの生年月日は 18 歳になった場合にのみ更新できます。ここでは、条件が満たされた場合にのみデータが変更されるように、データ連携を無効にする必要があります。

3. ビジネス ロジック ルール

場合によっては、特定のビジネス ロジック ルールに従ってデータを処理および更新する必要があります。これには、複数の属性の計算、データ検証、およびその他の特定のシナリオが含まれる場合があります。この場合、データのより完全かつ正確な処理と更新を保証するには、データ連携を無効にする必要があります。

データ連携を無効にする必要がある理由がわかりました。次に、Vue でこれを行う方法を見てみましょう。

3. データ連携無効化の技術実装

Vue におけるデータ連携無効化の実装技術は非常にシンプルです。 Vue 自体が提供する $set メソッドと $watch メソッドを使用するだけです。

1. $set メソッドを使用する

Vue の $set メソッドを使用すると、既存のオブジェクトにプロパティを動的に追加できます。このメソッドは Vue のリアクティブ システムをバイパスし、関連する他のプロパティを変更せずにプロパティの変更を制御できるようにします。

次のコード例には、

user という名前のオブジェクト プロパティを持つ Vue インスタンスがあります。ユーザー オブジェクトの age プロパティを新しい値に設定したいのですが、この変更によって関連データが応答することは望ましくありません。このメソッドの実装は簡単です。

# 禁止数据联动的代码

export default {
  data() {
    return {
      user: {
        name: 'John Doe',
        age: 30
      }
    }
  },
  methods: {
    updateAge(value) {
      // 使用 $set 方法更新 user 对象的 age 属性
      this.$set(this.user, 'age', value)
    }
  }
}
ログイン後にコピー

これにより、updateAge メソッドを呼び出すたびに、user.age への変更を制御できます。

2. $watch メソッドを使用する

Vue の $watch メソッドは、コンポーネント内のプロパティの変更を監視し、それに応じて関数を呼び出すことができます。この方法を使用することで、属性の変更を制御し、データ連携の発生を防ぐことができます。

次のコード例には、

user という名前のオブジェクト プロパティを持つ Vue インスタンスがあります。特定の条件下でのみユーザー オブジェクトの age 属性値を変更できるようにしたいと考えています。このメソッドを実装するには、$watch メソッドを使用して user.age を監視する必要があります。プロパティが更新されると、条件が満たされているかどうかが確認されます。一致しない場合は、プロパティを前の値に戻すだけで済みます。

# 使用 $watch 方法阻止数据联动

export default {
  data() {
    return {
      user: {
        name: 'John Doe',
        age: 30
      }
    }
  },
  watch: {
    'user.age'(newValue, oldValue) {
      if (newValue < 18) {
        // 如果新值不合法,则将属性设置回旧值
        this.user.age = oldValue
      }
    }
  },
  methods: {
    updateAge(value) {
      this.user.age = value
    }
  }
}
ログイン後にコピー
このように、

updateAge が呼び出されるとき、$watch メソッドは、設定されたルールに従って属性の変更が正当であるかどうかを判断します。変更が要件を満たしている場合、新しい値がユーザー オブジェクトに設定されます。要件が満たされていない場合、$watch メソッドは変更されたプロパティ値を以前の値に戻します。

要約

データ リンクを無効にすることは、特定のシナリオでは非常に必要であり、予期しない問題を効果的に回避するのに役立ちます。 Vue でデータ連携を無効にする方法は数多くありますが、この記事では主に Vue で最もよく使われている実装技術である $set メソッドと $watch メソッドの使用方法を紹介します。 Vue で同様のデータ制限とフィルタリング操作を実装する必要がある場合、これらのメソッドを簡単に使用して、データ変更を制御し、データ リンクの発生を防ぐことができます。

以上がvueではデータ連携が禁止されているの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート