Vue で子コンポーネントに親コンポーネントのデータを変更させる方法

coldplay.xixi
リリース: 2020-08-13 16:47:27
転載
5581 人が閲覧しました

Vue で子コンポーネントに親コンポーネントのデータを変更させる方法

1. vue での監視について理解する

## 必要に応じて属性の変更を監視するには、通常、親コンポーネントが子コンポーネントに属性の変更を渡すときに watch を使用します。

•1. 一般的な使用シナリオ

...
watch:{
  value(val) {
    console.log(val);
    this.visible = val;
  }
}
...
ログイン後にコピー

関連する学習の推奨事項:

javascript ビデオ チュートリアル

•2. 最初から実行する場合

...
watch: {
  firstName: {
    handler(newName, oldName) {
      this.fullName = newName + '-' + this.lastName;
    },
    immediate: true,
  }
}
...
ログイン後にコピー

•3. 詳細な監視 (配列、オブジェクト)

...
watch: {
  obj: {
    handler(newName, oldName) {
    console.log('///')
  },
  immediate: true,
  deep: true,
}
...
ログイン後にコピー

2. サブコンポーネント内の親コンポーネントのプロパティを変更する方法を理解する

vue2.0以降 双方向バインディングではなくなりました 双方向バインディングを行う場合は特別な処理が必要です。

[Vue warn]: 親コンポーネントが再レンダリングされるたびに値が上書きされるため、プロップを直接変更することは避けてください。代わりに、プロップの値に基づいてデータまたは計算されたプロパティを使用してください。変更されるプロップ: "変更された属性名 "

•1. イベントを親コンポーネントに送信して

**在子组件test1中**
<input type="text" v-model="book"/>
<button @click="add">添加</button>
<p v-for="(item, index) of books" :key="index">{{item}}</p>
...
methods: {
  add() {
    // 直接把数据发送给父组件
    this.$emit(&#39;update&#39;, this.book);
    this.book = &#39;&#39;;
  },
},
**在父组件中**
<test1 :books="books" @update="addBook"></test1>
...
addBook(val) {
  this.books = new Array(val)
},
ログイン後にコピー

•2. .sync を使用して子コンポーネントに変更を許可します親コンポーネントの値 (実際には上記のメソッドの簡易バージョン)

**在父组件中,直接在需要传递的属性后面加上.sync**
<test4 :word.sync="word"/>
**在子组件中**
<template>
  <p>
    <h3>{{word}}</h3>
    <input type="text" v-model="str" />
  </p>
</template>
<script>
export default {
  props: {
    word: {
      type: String,
      default: &#39;&#39;,
    },
  },
  data() {
    return {
      str: &#39;&#39;,
    }
  },
  watch: {
    str(newVal, oldVal) {
      // 在监听你使用update事件来更新word,而在父组件不需要调用该函数
      this.$emit(&#39;update:word&#39;, newVal);
    }
  }
}
</script>
ログイン後にコピー

•3. サブコンポーネントにコピーをコピーします

**子组件中**
export default {
  props: {
    // 已经选中的
    checkModalGroup: {
      type: Array,
      default: [],
      required: false,
    }
  },
  data() {
    return{
      copyCheckModalGroup: this.checkModalGroup, // 选中的
    }
  },
  methods: {
    // 一个一个的选择
    checkAllGroupChange(data) {
      // 把当前的发送给父组件
      this.$emit(&#39;updata&#39;, data);
    },
  },
  watch: {
    checkModalGroup(newVal, oldVal) {
      this.copyCheckModalGroup = newVal;
    }
  }
}
**父组件中直接更新传递给子组件的数据就可以**
...
// 更新子组件数据
roleCheckUpdata(data) {
  this.roleGroup = data;
},
...
ログイン後にコピー

関連学習の推奨事項:

プログラミング ビデオ

以上がVue で子コンポーネントに親コンポーネントのデータを変更させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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