ホームページ > バックエンド開発 > PHPチュートリアル > Vue コンポーネント通信: リストレンダリング通信には v-for ディレクティブを使用します

Vue コンポーネント通信: リストレンダリング通信には v-for ディレクティブを使用します

WBOY
リリース: 2023-07-09 11:42:01
オリジナル
848 人が閲覧しました

Vue コンポーネント通信: リスト レンダリング通信には v-for ディレクティブを使用します

Vue.js では、コンポーネント通信は非常に重要な部分です。一般的に使用されるコンポーネント通信方法の 1 つは、リスト レンダリング通信に v-for 命令を使用することです。 v-for ディレクティブを使用すると、リストを簡単にレンダリングし、リスト内のコンポーネント間で通信できます。

シナリオ例:
ToDo リストをレンダリングし、項目の追加、完了、削除の機能を実装できる TodoList コンポーネントがあるとします。リスト内の各項目は個別のコンポーネントであり、これらのコンポーネントが相互に通信できるようにする必要があります。

コードの実装:
まず、各 ToDo 項目のコンテンツをレンダリングする TodoItem コンポーネントを作成する必要があります。このコンポーネントでは、props 属性を使用して、親コンポーネントから渡されたデータを受け取ることができます。

<template>
  <div class="todo-item">
    <input type="checkbox" v-model="isChecked" @change="completeTask">
    <span :class="{ 'completed': isChecked }">{{ item }}</span>
    <button @click="deleteTask">删除</button>
  </div>
</template>

<script>
export default {
  props: ['item'],
  data() {
    return {
      isChecked: false
    };
  },
  methods: {
    completeTask() {
      this.isChecked = !this.isChecked;
    },
    deleteTask() {
      this.$emit('delete-task', this.item);
    }
  }
};
</script>

<style scoped>
.completed {
  text-decoration: line-through;
}
</style>
ログイン後にコピー

次に、親コンポーネントで v-for ディレクティブを使用して、ToDo リストをレンダリングし、子コンポーネントと通信する必要があります。

<template>
  <div>
    <h1>Todo List</h1>
    <input type="text" v-model="newTask" @keydown.enter="addTask">
    <div class="todo-list">
      <todo-item v-for="(task, index) in tasks" :key="index" :item="task" @delete-task="deleteTask" />
    </div>
  </div>
</template>

<script>
import TodoItem from './TodoItem.vue';

export default {
  components: {
    TodoItem
  },
  data() {
    return {
      tasks: [],
      newTask: ''
    };
  },
  methods: {
    addTask() {
      if (this.newTask.trim() !== '') {
        this.tasks.push(this.newTask);
        this.newTask = '';
      }
    },
    deleteTask(item) {
      const index = this.tasks.indexOf(item);
      if (index !== -1) {
        this.tasks.splice(index, 1);
      }
    }
  }
};
</script>

<style scoped>
.todo-list {
  margin-top: 20px;
}
</style>
ログイン後にコピー

上記のコードでは、v-for ディレクティブを使用して各 TodoItem コンポーネントのレンダリングをループし、props 属性を通じて各項目を子コンポーネントに渡します。子コンポーネントの削除ボタンをクリックすると、$emit メソッドを通じてカスタム イベントがトリガーされ、削除される項目が親コンポーネントに渡されます。

このような単純なコード実装を通じて、ToDo アイテムの追加、完了、削除の機能を実装でき、コンポーネントは相互に通信できます。

概要:
リストレンダリング通信に v-for ディレクティブを使用することで、コンポーネントをより柔軟に管理し、コンポーネント間の通信を容易にすることができます。実際の開発においては、ニーズに応じて v-for 命令を柔軟に使用することができ、開発効率を向上させることができます。

上記はv-for命令を使用したリスト描画通信の例と説明です。 Vue コンポーネントの通信を理解するのに役立つことを願っています。

以上がVue コンポーネント通信: リストレンダリング通信には v-for ディレクティブを使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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