Vue.jsは、カスタムディレクティブを使用してコンポーネントオプション(prop)を追加します

カイオタリファ

Custom独自のディレクティブ(v-colorを使用するコンポーネントがあります

<custom v-color="color" />

そして、私が定義する私のスクリプトthis.colorthis.changeColor()

{
   data () {
     return {
       color: red
     }
   },

   methods: {
     changeColor (color) {
       this.color = color
     }
   }
}

どのように私はのコード書くことができるv-colorの変化に指示をv-bind:colorしますか<custom />

つまり、の値は、コンポーネントがロードされたときの値にv-bind:colorなりますredthis.colorがメソッド(などthis.changeColor('blue')によって変更された場合、の値はv-bind:color自動更新されます。

私はv-color何度も使用するので、「監視」を回避するソリューションをいただければ幸いです。

デレク・ポラード

このようなものはあなたが探しているものに合うようです:

Vue.component('third-party-component', {
  props: ['color'],
  template: '<div :style="{ color }" v-cloak>{{color}}</div>'
});

Vue.component('hoc-component', {
  props: ['color'],
  computed: {
    transformedColor () {
      if (this.color === "blu") return "blue";
      if (this.color === "re") return "red";
      if (this.color == "or") return "orange";
      if (this.color == "pur") return "purple";
      return this.color;
    }
  },
  template: '<third-party-component  :color="transformedColor" />'
});

new Vue({
  el: '#app'
});
<html>
<body>
  <div id="app" v-cloak>
    <div>
      <hoc-component color="blu"></hoc-component>
      <hoc-component color="or"></hoc-component>
      <hoc-component color="re"></hoc-component>
      <hoc-component color="pur"></hoc-component>
      <hoc-component color="pink"></hoc-component>
      <hoc-component color="green"></hoc-component>
    </div>
  </div>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
</body>
</html>

ここでは、必要なデータを変更してサードパーティコンポーネントに渡すために、高次コンポーネントパターンを利用しています。これは、ディレクティブの副作用なしにデータ変更を変更および処理するためのはるかに効果的な方法です。

お役に立てれば!

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

vueはカスタムコンポーネントをプロパティとして親コンポーネントに渡します

分類Dev

Vue.jsは、v-onceディレクティブを含むコンポーネントの再レンダリングを強制します

分類Dev

vue:コンポーネント内の「this」にカスタムプロパティを追加し、「__ ob__」とgetter / setterが追加されないようにします

分類Dev

実行時にVueインスタンスまたはそのルート$ dataにリアクティブプロパティを追加しないでください-データオプションで事前に宣言してください。

分類Dev

Vue.js-カスタムディレクティブをES6モジュールとしてインポート

分類Dev

Vueディレクティブからコンポーネント名にアクセスします

分類Dev

オプションをカスタムvueコンポーネントに渡す方法は?

分類Dev

Djangoテンプレートタグを使用してテンプレートにコンテキストを追加するのは悪い考えですか?(Vueコンポーネントの使いやすさを模倣しようとしています)

分類Dev

配列インデックスを介してデータからVue.jsのコンポーネントにオブジェクトを渡します

分類Dev

セットアップオプション内のaxios応答コールバックのリアクティブデータを更新します-Vue3

分類Dev

カスタムDjangoテンプレートタグでVue.jsディレクティブを動的にレンダリングする方法

分類Dev

オブジェクトの属性をpropとしてvue.jsコンポーネントに渡す方法

分類Dev

Vue 2 でパラメータなしでコンポーネント ディレクティブをレンダリングする

分類Dev

Vue.jsを使用してPIXIパーティクルコンテナにスプライトを追加する

分類Dev

Lodash.removeを使用したVuexミューテーションによって状態を変更しても、Vueコンポーネントでリアクティブな再レンダリングがトリガーされません

分類Dev

Vueコンポーネントのレンダリング機能:エスケープされていないhtmlエンティティを出力します

分類Dev

vue.jsでカスタム要素(ネイティブWebコンポーネント)をターゲットにする方法は?

分類Dev

カスタムVue.jsコンポーネントにサードパーティコンポーネント(vue-color)をインポートします

分類Dev

vue.jsコンポーネントのディレクトリからファイルを取得します

分類Dev

vue.jsのコンポーネントとプロパティを使用して関数を呼び出す

分類Dev

vue.jsインスタンスからカスタムネイティブWebコンポーネントへの双方向バインディングを作成するにはどうすればよいですか?

分類Dev

Vueルーターのベストプラクティス:ストアまたはコンポーネントでリダイレクトしますか?

分類Dev

0.01ステップを使用するVueカスタム番号入力コンポーネントはint値のみを更新します

分類Dev

vue.config.jsを変更して、ネストされたサブディレクトリにページがある複数ページのVue.jsアプリケーションを作成するにはどうすればよいですか?

分類Dev

Bootstrap-Vue:テーブルコンポーネントでチェックボックスを使用してデータをフィルタリングするにはどうすればよいですか?

分類Dev

Vue.jsコンポーネントはデータプロパティ内のメソッドを呼び出します

分類Dev

vue-loader依存性注入を使用してvue.jsコンポーネントをテストします

分類Dev

要素がvueコンポーネントをクリックした場合、どうすればアクティブなクラスを追加できますか?

分類Dev

計算されたプロパティを使用してコンポーネントの一部を表示または非表示にするVue.js

Related 関連記事

  1. 1

    vueはカスタムコンポーネントをプロパティとして親コンポーネントに渡します

  2. 2

    Vue.jsは、v-onceディレクティブを含むコンポーネントの再レンダリングを強制します

  3. 3

    vue:コンポーネント内の「this」にカスタムプロパティを追加し、「__ ob__」とgetter / setterが追加されないようにします

  4. 4

    実行時にVueインスタンスまたはそのルート$ dataにリアクティブプロパティを追加しないでください-データオプションで事前に宣言してください。

  5. 5

    Vue.js-カスタムディレクティブをES6モジュールとしてインポート

  6. 6

    Vueディレクティブからコンポーネント名にアクセスします

  7. 7

    オプションをカスタムvueコンポーネントに渡す方法は?

  8. 8

    Djangoテンプレートタグを使用してテンプレートにコンテキストを追加するのは悪い考えですか?(Vueコンポーネントの使いやすさを模倣しようとしています)

  9. 9

    配列インデックスを介してデータからVue.jsのコンポーネントにオブジェクトを渡します

  10. 10

    セットアップオプション内のaxios応答コールバックのリアクティブデータを更新します-Vue3

  11. 11

    カスタムDjangoテンプレートタグでVue.jsディレクティブを動的にレンダリングする方法

  12. 12

    オブジェクトの属性をpropとしてvue.jsコンポーネントに渡す方法

  13. 13

    Vue 2 でパラメータなしでコンポーネント ディレクティブをレンダリングする

  14. 14

    Vue.jsを使用してPIXIパーティクルコンテナにスプライトを追加する

  15. 15

    Lodash.removeを使用したVuexミューテーションによって状態を変更しても、Vueコンポーネントでリアクティブな再レンダリングがトリガーされません

  16. 16

    Vueコンポーネントのレンダリング機能:エスケープされていないhtmlエンティティを出力します

  17. 17

    vue.jsでカスタム要素(ネイティブWebコンポーネント)をターゲットにする方法は?

  18. 18

    カスタムVue.jsコンポーネントにサードパーティコンポーネント(vue-color)をインポートします

  19. 19

    vue.jsコンポーネントのディレクトリからファイルを取得します

  20. 20

    vue.jsのコンポーネントとプロパティを使用して関数を呼び出す

  21. 21

    vue.jsインスタンスからカスタムネイティブWebコンポーネントへの双方向バインディングを作成するにはどうすればよいですか?

  22. 22

    Vueルーターのベストプラクティス:ストアまたはコンポーネントでリダイレクトしますか?

  23. 23

    0.01ステップを使用するVueカスタム番号入力コンポーネントはint値のみを更新します

  24. 24

    vue.config.jsを変更して、ネストされたサブディレクトリにページがある複数ページのVue.jsアプリケーションを作成するにはどうすればよいですか?

  25. 25

    Bootstrap-Vue:テーブルコンポーネントでチェックボックスを使用してデータをフィルタリングするにはどうすればよいですか?

  26. 26

    Vue.jsコンポーネントはデータプロパティ内のメソッドを呼び出します

  27. 27

    vue-loader依存性注入を使用してvue.jsコンポーネントをテストします

  28. 28

    要素がvueコンポーネントをクリックした場合、どうすればアクティブなクラスを追加できますか?

  29. 29

    計算されたプロパティを使用してコンポーネントの一部を表示または非表示にするVue.js

ホットタグ

アーカイブ