Vuejs2 Vue2-如何重新创建组件?

Vuejs2 Vue2-如何重新创建组件?,vuejs2,Vuejs2,如何在单击按钮后重新创建整个组件 假设我在组件“UserPanel”中,有一个按钮调用“Refresh”。 当我点击那个按钮时,我想销毁这个组件并从头开始创建它。我不习惯使用像“vm.$forceUpdate()”这样的选项,因为它对我的情况没有帮助 有办法吗 我的应用程序代码: App.vue: <template> <div id="main-cont"> <NavBar></NavBar> <ro

如何在单击按钮后重新创建整个组件

假设我在组件“UserPanel”中,有一个按钮调用“Refresh”。 当我点击那个按钮时,我想销毁这个组件并从头开始创建它。我不习惯使用像“vm.$forceUpdate()”这样的选项,因为它对我的情况没有帮助

有办法吗

我的应用程序代码:

App.vue:

<template>
    <div id="main-cont">
        <NavBar></NavBar>
        <router-view></router-view>
    </div>
</template>

<script>

import NavBar from './components/TopBar/NavBar';
import {mapActions,mapGetters} from 'vuex';
import axios from 'axios';

    export default {
        name: 'App',
        components: {
            NavBar,
        },
        computed:{
            ...mapGetters(['isLoggedIn'])
        },
        methods:{
            ...mapActions(['loadLanguage','setToken','setUserLogged','loadUserProfile'])
        },
        created(){
            this.loadLanguage();
            this.setToken();
            let userLoggedIn = document.head.querySelector('meta[name="logged"]').content;
            if(userLoggedIn){
                this.setUserLogged();
                this.loadUserProfile();
            }

        }

    }

</script>

<style scoped>
    #main-cont{
        height: 100%;
    }
</style>
要重新加载的组件。 游戏创建:

<Template>
    <div>
        <button @click="reloadThisComponent"></button>
    </div>
</Template>
<script>
    export default{
        name: 'GameCreate',
        methods:{
            reloadThisComponent(){

            }
        }
    }
</script>

导出默认值{
名称:“游戏创建”,
方法:{
重新加载ThisComponent(){
}
}
}
谢谢。

编辑(使用新问题详细信息):由于您使用的是view router,并且您的组件已注册为路由,只需将以下内容添加到游戏组件中的重建方法中即可,这应该可以正常工作

this.$router.go(this.$router.currentRoute)
const路由器=新的VueRouter({
模式:“历史”,
})
新Vue({
路由器,
el:“#应用程序”,
方法:{
重载:函数(){
this.$router.go(this.$router.currentRoute)
}
},
创建(){
console.log(“嘿”)
}
})

重新加载
编辑(使用新的问题详细信息):由于您使用的是view router,并且您的组件已注册为路由,只需将以下内容添加到游戏组件中的重建方法中,即可正常工作

this.$router.go(this.$router.currentRoute)
const路由器=新的VueRouter({
模式:“历史”,
})
新Vue({
路由器,
el:“#应用程序”,
方法:{
重载:函数(){
this.$router.go(this.$router.currentRoute)
}
},
创建(){
console.log(“嘿”)
}
})

重新加载

您能否提供有关如何在组件上设置v-if并从该组件内部切换的更多详细信息?我是Vue的新手,只有一个月的经验。谢谢。至少有两种方法。我要编辑我的答案,等几分钟。嗯,我现在还不知道如何在我的项目中实现你的解决方案。我使用“vue路由器”,所以它可能会在实现上有所不同。给我几分钟时间用我的代码更新我的问题。谢谢,好的。我添加了我的代码,所以现在应该一切都清楚了。我刚刚编辑了我的答案。告诉我它是否起作用,或者您是否仍有麻烦:能否提供更多详细信息,说明如何在组件上设置v-if并从该组件内部进行切换?我是Vue的新手,只有一个月的经验。谢谢。至少有两种方法。我要编辑我的答案,等几分钟。嗯,我现在还不知道如何在我的项目中实现你的解决方案。我使用“vue路由器”,所以它可能会在实现上有所不同。给我几分钟时间用我的代码更新我的问题。谢谢,好的。我添加了我的代码,所以现在应该一切都清楚了。我刚刚编辑了我的答案。告诉我它是否起作用,或者你是否仍有麻烦:D