Vue は人気のある JavaScript フレームワークであり、その主な目的はフロントエンド開発をより簡単かつ迅速にすることです。 Vue フレームワークで最も一般的に使用される概念の 1 つはデータ リンケージです。これにより、アプリケーション内のデータはユーザーの動作に対して非常に敏感で動的になります。
ただし、開発者はデータ連携を禁止し、特定の条件下でのみ特定のデータの変更を許可したい場合があります。最も一般的な状況は、データ制限とフィルタリングです。
この記事では、Vue でデータ リンクを無効にする方法を紹介し、特定の特殊な状況下でのみデータ リンクをサポートすることを希望します。
1. データ連携とは
Vue におけるデータ連携とは、あるデータが変更されると、それに関連するすべてのデータも更新されることを意味します。このリンク メカニズムは、Vue の応答システムを通じて実現できます。
Vue のリアクティブ システムとは、オブジェクトを Vue インスタンスにデータとして渡すと、Vue が独自のプロパティをオブジェクトに追加して、オブジェクト内のプロパティの変更を追跡することを意味します。このプロパティが新しい値に設定されると、Vue はコンポーネントにテンプレートを再レンダリングするように通知します。
たとえば、Vue インスタンスにオブジェクトがあるとします。
data: { user: { name: 'John Doe', age: 30 } }
コードを通じて user.age
の値を更新すると、Vue は次の値を自動的に更新します。コンポーネントの 2 つの場所:
user.age が変更されると、プロパティ自体が変更されるだけでなく、それに関係する他のプロパティや計算機のプロパティも更新されます。
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) } } }
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 サイトの他の関連記事を参照してください。