vue.js - Vue Eventbus:handler.apply 不是一个函数
问题描述
我想在另一个组件更改时重新加载我的一个组件(例如,我使用 axios 发送一个 put)
我用 eventbus 试过,但我得到了这个错误:
handler.apply 不是一个函数
在我要触发的组件中:
EventBus.$emit('compose-reload', Math.random()*100);
我想被触发的地方:
<template>
<div class="">
<div class="">
<div class="columns">
<div class="column is-one-fifth">
<div class="box">
<Menu></Menu>
</div>
</div>
<div class="column is-four-fifth">
<div class="box">
<router-view :key="key"></router-view>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Menu from './includes/Menu'
import EventBus from '../../../event-bus';
export default {
components: {
Menu,
},
data() {
return {
key: null
}
},
mounted(){
EventBus.$on('compose-reload', this.key);
},
created(){
this.key = Math.random()*100
}
}
</script>
解决方案
EventBus.$on
期望处理函数作为第二个参数,但变量this.key
被传入,因此错误。
你应该改变这个:
mounted(){
EventBus.$on('compose-reload', this.key);
}
对此:
mounted(){
EventBus.$on('compose-reload', key => {
this.key = key;
});
}
推荐阅读
- typescript - TypeScript:让库的用户定义类型
- mysql - MySQL SELECT * 在 Unicode 上失败
- node.js - node.js 和 express 的区别
- python - 通过单击页面中的每个超链接来抓取网站
- r - 在 R 中满足另一个条件时(即当另一个变量是特定值时)需要帮助用 NA 替换值
- javascript - props.images.map 不是函数(函数组件)
- entity-framework - 在 EF Core 中的每条记录上自动设置创建和修改日期的问题
- java - Spring将实例化委托给另一个线程
- python - 如何将单行数据框连接到更大的数据框?当前获取“TypeError:预期的元组,得到str”
- c# - 如何通过使用按钮将学生对象添加到数组中?