vue provide注入方法如何改写成ts装饰器的形式

强制刷新页面

<template>
  <div id="app">
    <router-view v-if="isRouterAlive"/>
  </div>
</template>

<script lang="ts">
import {Component,Vue,Inject,Provide} from 'vue-property-decorator'

@Component({
    name: 'App',
})

export default class extends Vue {
    private isRouterAlive  = true

    public reload(){
        this.isRouterAlive = false
        this.$nextTick(()=>{
            this.isRouterAlive = true
        })
    }

    @Provide()
    reload = this.reload

}

</script>

像这样写会报重复的标识符

阅读 5.7k
3 个回答
<template>

 <div id="app">

 <router-view v-if="isRouterAlive" />

 </div>

</template>

<script lang="ts">

import { Component, Vue, Inject, Provide } from 'vue-property-decorator'

@Component({

 name: 'App',

})

export default class extends Vue {

 private isRouterAlive = true

 @Provide('reload')

 reload () {

 this.isRouterAlive = false

 this.$nextTick(() => {

 this.isRouterAlive = true

 })

 }

}

</script>

<style lang="scss">

</style>

关于子组件的调用

@Component({
    name: 'Dashboard'
})
export default class extends Vue {
    @Inject('reload') readonly reload!: Function;

    get name() {
        return UserModule.name;
    }

    get roles() {
        return UserModule.roleCode;
    }

    handleLogout() {
        console.log('logout');
        this.reload();
        AuthModule.logout();
    }
}
新手上路,请多包涵

小白关注ing

这个地方怎么解决的啊。大佬

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题