vue -封装一个弹出层组件(组件之间的通信)

Posted 辣可乐少加冰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue -封装一个弹出层组件(组件之间的通信)相关的知识,希望对你有一定的参考价值。


前言

哈喽今天再回顾一下vue的组件功能,谈到组件无非就是父组件和子组件之间的传值问题了,我们一起探讨一下吧


提示:以下是本篇文章正文内容,下面案例可供参考

一、Vue组件

vue组件官网

首先组件是可复用的实例,当我们封装好了一个组件后在父组件引入就可以使用了。
所以他们与new Vue 接受相同的选项,例如 data、computed、watch、methods、以及生命周期钩子等。

你可以将组件任意次的使用:

注意:

  1. 当你点击按钮时,每个组件都会独立的维护他的count。因为你,每用一次组件,就会有一个他的新的实例被创建。
  2. data 必须是一个函数?他为什么是一个函数呢?首先vue组件是用来复用的,且组件之间是引用关系,如果组件中的data不是一个
    函数的话,那么他的子组件的实例就不是一个独立的拷贝,而且他们之间的传值也会受到一定的影响。

二、项目实战

页面中点击按钮弹出新增的组件,双击数据在右边显示,点击保存新增一条数据,数据不能重复。

1.引入组件

代码如下(示例):

组件之间引入页面中调用就可以使用了,难点在下边我们接着看

export default {
	components: {
	project:() => import ("@/components/project.vue")
}
}

2.读入数据

代码如下(示例):
点击新增时先通过watch 将
watch: 更多的是「观察」的作用,类似于某些数据的监听回调 ,每当监听的数据变化时都会执行回调进行后续操作;
但我们在数据变化时执行异步或者开销较大的操作时,应该使用watch

watch: {
    PopupShowr() {
      this.visible = this.PopupShowr;
    }

通过调用调用接口显示数据,将获取的值传入到treedata中。
再使用子组件中的@node-click ="Selectsamplecategory"对数据进行点击次数的判断
判断鼠标点击的次数,单次点击次数超过2次不作处理,直接返回,也可以拓展成多击事件

  Selectsamplecategory(data) {
      console.log(data);
      this.treeClickCount++;
      if (this.treeClickCount >= 2) {
        return;
      }
      this.timer = window.setTimeout(() => {
        if (this.treeClickCount == 1) {
          this.treeClickCount = 0;
        } else if (this.treeClickCount > 1) {
          this.treeClickCount = 0;
          if (this.rightList.length == 0) {
            this.rightList.push(data)
          } else {
              this.roleName = data;
          var _this = this;
            this.rightList.forEach((item) => {
               if(_this.rightList.indexOf(_this.roleName) === -1 ){
                  _this.rightList.push(_this.roleName);
               }
            });
          }
        
        }
      }, 300);
    },

经过一系列的判断拿到值后再通过子组件将值传给父组件

父组件配置新增数据,将子组件传过的值进行遍历再通过调用接口实现新增

右侧的数据删除:
使用熟悉的splice 数组的前添后删 shift unshift push pop splice 多种用法可特意学习一下

 deletelist(row){
	this.rightList.foreach(item,index){
	if(item == row) {
	this.rightList.splice(index,1)  
		}
	}
}

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了vue的使用,而vue提供了大量能使我们快速便捷地处理数据方法。

以上是关于vue -封装一个弹出层组件(组件之间的通信)的主要内容,如果未能解决你的问题,请参考以下文章

在“vue”中找不到“导出”“Vue”

Vue.js + vue-resource + vue-router = 词法声明错误?

Vue ---- 项目与环境搭建 初始项目结构 Vue生命周期

Vue3学习笔记02:Vue3打包

【vue】在vue中使用高德地图API

Vue 3:模块 '"../../node_modules/vue/dist/vue"' 没有导出成员