Vueはボタンをクリックして、コンポーネントを動的に作成および削除します

主な機能要件:

  1. 左側のコンポーネントライブラリボタンをクリックして、対応するさまざまなコンポーネントを作成し、右側の領域に表示します
  2. 右側に作成されたコンポーネントの削除ボタンをクリックして、対応するコンポーネントを削除します
  3. 対応するコンポーネントを削除すると、下のコンポーネントの位置が自動的に上に移動します

効果画像:

-画像を挿入

コード:

  1. 親コンポーネントコード(CSSスタイルコードを削除したもの):
<template>
  <div class="home">
    <div class="container">
      <div class="addZujian">
        <div>
          <span>组件库</span>
          <span style="color:#bbb;margin-left:10px;font-size:14px;">点击使用</span>
        </div>
        <div class="zujianBtn" @click="zujian">添加组件1</div>
        <div class="zujianBtn" @click="zujian2">添加组件2</div>
      </div>
      <div class="zujianContent">
        <div>组件展示区</div>
        <!-- Vue提供了 component ,来展示对应名称的组件 -->
        <!-- component 是一个占位符, :is 属性,可以用来指定要展示的组件的名称 -->
        <component
          v-for="(item,index) in comName"
          :is="item.name"
          :key="index"
          @func="getContent(index)"
        ></component>
      </div>
    </div>
  </div>
</template>
<script>
// 引入子组件
import zujian1 from "./zujian";
import zujian2 from "./zujian2";
export default {
    
    
  data() {
    
    
    return {
    
    
      comName: []
    };
  },
  components: {
    
    
    zujian1,
    zujian2
  },
  methods: {
    
    
    // 添加组件1
    zujian() {
    
    
      this.comName.push({
    
    
        name: "zujian1"
      });
    },
    // 添加组件2
    zujian2() {
    
    
      this.comName.push({
    
    
        name: "zujian2"
      });
    },
    // 删除组件
    getContent(index) {
    
    
      this.comName.splice(index, 1);
    }
  }
};
</script>
  1. サブコンポーネント1コード(CSSスタイルコードを削除):
<template>
  <div class="home">
    <div class="container">
      <span>我是组件1</span>
      <span class="del" @click="del">删除组件</span>
    </div>
  </div>
</template>
<script>
export default {
    
    
  data() {
    
    
    return {
    
    };
  },
  methods: {
    
    
    del() {
    
    
      // 子组件向父组件传值(此处传递一个空值) - 父组件将执行getContent方法
      this.$emit('func','')
    }
  }
};
</script>
  1. サブコンポーネント2のコード(CSSスタイルコードを削除):
<template>
  <div class="home">
    <div class="container">
      <span>我是组件2</span>
      <span class="del" @click="del">删除组件</span>
    </div>
  </div>
</template>
<script>
export default {
    
    
  data() {
    
    
    return {
    
    };
  },
  methods: {
    
    
    del() {
    
    
      // 子组件向父组件传值(此处传递一个空值) - 父组件将执行getContent方法
      this.$emit("func", "");
    }
  }
};
</script>
Webフロントエンド通信QQグループ:327814892

おすすめ

転載: blog.csdn.net/qq_43327305/article/details/103731533