我想在其他组件发生更改时重新加载其中一个组件(例如,我发送带有axios的看跌期权)

我用eventbus尝试了一下,但是出现了这个错误:



在我要触发的组件中:

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;
   });
}

关于vue.js - Vue Eventbus:handler.apply不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58363201/

10-14 10:55