ホームページ  >  記事  >  ウェブフロントエンド  >  Vue親子コンポーネントの同期送信・非同期送信入門(コード付き)

Vue親子コンポーネントの同期送信・非同期送信入門(コード付き)

不言
不言転載
2019-02-13 09:53:343377ブラウズ

この記事では、Vue の親子コンポーネントの同期送信と非同期送信について説明します。必要な方は参考にしていただければ幸いです。

1. データを同期的に転送する

親コンポーネントの food は、値 0 の type フィールドを props を通じて子コンポーネントに渡します。子コンポーネントは type を取得できます。初期化中に、文字「0 フルーツ」をレンダリングします。

// 父组件 food.vue
<template>
  <apple :type="type"></apple>
</template>
<script>
    data (){
        return {
          type: 0
      };
      }
</script>
// 子组件 apple.vue
<template>
  <span>{{childType}}</span>
</template>
<script>
   props: ['type'],
   created () {
           this.childType = this.formatterType(type);
   },
   method () {
           formatterType (type) {
        if (type === 0) {
          return "0 水果";
        }
        if (type === 1) {
          return "1 蔬菜";
        }
        return '';
      }
   }
</script>

2 データの非同期送信

双方向バインディングに従って、データの非同期送信を保証します。 VUE の原理では、非同期で渡されるデータを監視する必要があることを知るのは難しくありません。

2.1 props

props によって渡されたデータがテンプレートに関連付けられている場合、コンポーネントの初期化時にデータが監視されます。以下のコードで型と情報を確認できます。
props によって渡されたデータがテンプレートに関連付けられていない場合は、props によって渡されたデータの監視を追加し、watch メソッドでテンプレートに関連付けられたオブジェクトを変更します。以下のコードで child_type を確認できます。このメソッドでは、ウォッチが監視するのは変更されたプロパティであるため、ターゲット オブジェクトを初期化する必要があります。

// 父组件 food.vue
<template>
  <apple :type="type" :info="info"></apple>
</template>
<script>
  data (){
    return {
      type: 0,
      info: {comment: 'ugly food'}
    };
  }
  created () {
      setTimeout (()=>{
        this.type = 1;
      this.info = {comment: 'tasty food'};
    },1000);
  }
</script>
// 子组件 apple.vue
<template>
  <p class="memuManage">
    <span>type: {{child_type}}</span>
    <span>type: {{type|formatterType}}</span>
    <span>info: {{info.comment}}</span>
  </p>
</template>
<script>
  export default {
    data () {
      return {
        child_type: ''
      };
    },
    props: ["type","info"],
    watch: {
      type (newVal) {
        this.child_type = this.formatterType(newVal);
      }
    },
    created () {
      this.child_type = this.formatterType(this.type);
    },
    filters: {
      formatterType: function (type) {
        if (type === 0) {
          return "0 水果";
        }
        if (type === 1) {
          return "1 蔬菜";
        }
        return '';
      }
    },
    methods: {
      formatterType (type) {
        if (type === 0) {
          return "0 水果";
        }
        if (type === 1) {
          return "1 蔬菜";
        }
        return '';
      }
    }
  };
</script>

2.2 vuex

データはストアに保存され、親コンポーネントは vuex のメソッドを呼び出してデータを変更します。
ストア データがサブコンポーネントのテンプレートに関連付けられている場合、サブコンポーネントが初期化されるときにデータが監視されます。
ストア データがサブコンポーネントのテンプレートに関連付けられていない場合は、ストア データの監視を追加し、監視メソッドで関連付けられたテンプレート オブジェクトを変更します。テンプレートに関連付けられたオブジェクトを初期化する必要があります。

3. データを同期または非同期で転送する

親コンポーネントが子コンポーネントに同期または非同期でデータを転送できる場合、まず子コンポーネントがターゲットと一致する必要があります。作成または計算されたオブジェクトは初期化されており、子コンポーネントは props によって渡されたデータを監視し、ターゲット オブジェクトを変更する必要があります。

以上がVue親子コンポーネントの同期送信・非同期送信入門(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。