美文网首页
利用.$emit、props、watch完成组件间(子组件、兄弟

利用.$emit、props、watch完成组件间(子组件、兄弟

作者: 持续5年输出bug | 来源:发表于2022-10-31 21:08 被阅读0次

现在接触项目有一段时间了,因为vue中组件概念,组件间传值属于常用的一种手段。
如图所示:


image.png

现在假设有这样一个页面(父组件),点击列表(子组件 A)的编辑按钮时触发了父组件的事件,并且携带了一个参数,然后根据这个参数去获取这一行的数据,将其填入表单(子组件B)之中,至此,就完成了父子组件的传值和兄弟组件间的传值:
一、父子组件间传值(尤指需要通过触发事件来传值)
.$emit

// 父组件里先绑定下
    <list :table-data="tableData"
                 :loading="loading"
                 @edit="handleEdit"></list>


    // 子组件触发父组件edit事件
    handleEdit (currentRow) {
      this.$emit('edit', currentRow.Id)
    },

    // 父组件接收子组件通过$emit方法传递的参数,并将其赋值给currentRow保存下来,为待会传给其他子组件作准备。
    handleEdit (Id) {
      this.editVisible = true
      this.currentRow = Id
    },

二、兄弟组件间传值
.$emit+props+watch
完成以上代码,发现作为父组件,其实就是充当了其他子组件之间传值的媒介,如果不用中央事件总线的方法去处理兄弟组件间的传值,那现在这种方法还是比较简单的。

// 记得先将获取到的这个参数初始化一下,然后双向绑定到子组件B上
  <edit :edit-visible.sync="editVisible"
                 :row-id.sync="currentRow"
                ></edit>

  // 接收父组件传递的参数
  props: {
    editVisible: {
      type: Boolean,
      default: false
    },
    rowId: {
      type: String,
      default: null
    }
  }

  watch: {
    // 监听父组件传递的数据
    rowId (val) {
      this.getRowData(val) // 这里是通过传递的这个参数去获取了这一行的数据
    }
  },

有时候需要传递多个参数,可以直接将一个对象传递过来,然后根据需要进行侦听即可,如下,虽然传递了一个对象,但是获取表单数据的时候只用到一个属性,需要注意的是,如果你要侦听一个对象,记得用deep:true。

    'rowData.id': {
      handler (val) {
        // 为当前表单赋值
        this.getRowData(val)
      },
      immediate: true
    }

相关文章

  • 利用.$emit、props、watch完成组件间(子组件、兄弟

    现在接触项目有一段时间了,因为vue中组件概念,组件间传值属于常用的一种手段。如图所示: 现在假设有这样一个页面(...

  • 利用.$emit、props、watch完成组件间(子组件、兄弟

    现在接触项目有一段时间了,因为vue中组件概念,组件间传值属于常用的一种手段。如图所示: 现在假设有这样一个页面(...

  • vue里面组件通讯

    一、父组件到子组件:通过props 二、子组件到父组件:通过$emit 三、兄弟组件通信:通过$emit和$on

  • vue组件的使用

    props和$emit 组件间通讯和自定义事件 父子通讯 props $emit兄弟组件或者隔代组件使用自定义事件...

  • Vue组建通信的几种方法

    组件通信一 —— props和$emit props和$emit 父组件 向 子组件 传递数据 用 props 子...

  • Vue组件通讯

    (1)子访问父组件:props (2)父访问子组件:$emit (3)兄弟组件通信:子1传给父组件,父再传给子2 ...

  • vue组件通信

    通常父子组件通信都是用props和$emit进行传递,父组件通过props传值给子组件,子组件通过$emit传值给...

  • 简单的todo-list

    利用v-model双向数据绑定父组件向子组件传值用 props子组件向父组件传值用 $emit()

  • Vue项目=====组件之间通信的几种方式

    一、父组件给子组件传递数据 props 二、子组件给父组件传递数据通过$emit函数调用的方式 三、兄弟组件(任何...

  • vue组件通信

    props/$emit:(常用) 比较常见的一种。父组件通过props向子组件传递数据,子组件通过$emit向父组...

网友评论

      本文标题:利用.$emit、props、watch完成组件间(子组件、兄弟

      本文链接:https://www.haomeiwen.com/subject/uqasxqtx.html