代码之家  ›  专栏  ›  技术社区  ›  Ritsaert Hornstra

刷新vue.js keep alive部分中的页面

  •  2
  • Ritsaert Hornstra  · 技术社区  · 6 年前

    我有一个Vue.js SPA,它使用Vue路由器。因为在登录每个页面后都需要保持状态(如输入的过滤器/分页),这是使用keep alive完成的:

    <keep-alive>
      <router-view/>
    </keep-alive>
    

    这工作得很好,但当有人注销并再次登录时,由于keep-alive,我仍然看到相同的筛选器值。

    我是否可以在注销时以编程方式刷新/清除保持活动状态的页面?

    2 回复  |  直到 6 年前
        1
  •  6
  •   Stephan-v    6 年前

    我不认为有一个简单的方法可以做到这一点( )所以你只有两个选择。

    选项1 将是重置状态,这意味着您在内部跟踪初始状态,并侦听类似于注销时发出的消息来重置状态 组件的初始状态。

    方案2 只是换掉 keep-alive 组件使用如下方式:

    <keep-alive v-if="loggedIn">
        <router-view></router-view>
    </keep-alive>
    
    <router-view v-else></router-view>
    
        2
  •  2
  •   WebMan    6 年前

    Vue.prototype.$loginState = new Vue();
    

    在组件中,单击logout按钮触发事件。

    function logout(){
        //your codes here to logout and then
        this.$loginState.$emit('logout');
    }
    

    <button @click="resetValues"> Logout </button>
    methods: {
        resetValues(){
            this.yourValue = '';
            this.filters = [];
        }
    }
    created(){
        this.$loginState.$on('logout', this.resetValues)
    }
    
        3
  •  1
  •   Chadi Kris Verlaenen    4 年前

    带电部件在里面 this.$children ,所以您可以遍历它们并修改状态。