Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
288 views
in Technique[技术] by (71.8m points)

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>

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
<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();
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.6k users

...