vue 组件面试题

props和$emit

父子组件之间的通讯方式,父组件向子组件传值,通过在便签属性上用v-bing传值,子组件通过 props接收。
子组件向父组件传值,需要子组件在组件内通过$emit触发一个事件,触发时间时,携带事件名和参数,父组件通过在组件标签上监听事件来处理子组件传递过来的值。

<button @click="deleteItem(item.id)">删除</button>
 deleteItem(id) {
            this.$emit('delete', id) // 触发事件,并给时间上带参数
        },
<List :list="list" @delete="deleteHandler"/> // 这里监听事件的时候,函数名中不带参数
deleteHandler(id) { // 直接在监听事件函数接收参数即可
            this.list = this.list.filter(item => item.id !== id)
        }
//his.list.filter(item => item.id !== id) 删除元素

组件间通讯 – 自定义事件 和其他多种答案

组件间通讯的三个答案:

  1. 父子组件之间通过props和emit触发事件来通讯
  2. 兄弟组件之间通过自定义事件来通讯
  3. 所有的组件之间的通讯都可以通过vuex来通讯。

自定义事件方式介绍如下

在一个组价中绑定一个时间 在mounted 方法中 绑定时间
都需要定义一个vue实例
绑定时间 用函数名字 方便解绑
在beforeDestory中解绑自定义的时间 event.$off()
$on $off $emit
event.js

import Vue from 'vue'
export default new Vue()

 // 调用自定义事件
            event.$emit('onAddTitle', this.title)

mounted() {
        // eslint-disable-next-line
        console.log('list mounted')

        // 绑定自定义事件
        event.$on('onAddTitle', this.addTitleHandler)
    },
    
beforeDestroy() {
        // 及时销毁,否则可能造成内存泄露
        event.$off('onAddTitle', this.addTitleHandler)
    }

组件生命周期(必考)

创建前 和挂载前的区别:创建前只是在js中创建好了vue实例,但是还并没有开始在浏览器渲染 monted完了之后,说明页面的元素已经在浏览器渲染完了,可以操作浏览器的DOM元素了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值