【问题标题】:Vue router view event propagationVue路由器视图事件传播
【发布时间】:2019-07-04 01:38:30
【问题描述】:

我不明白为什么路由器视图不发出“登录”事件。
这是我正在玩的小提琴:https://jsfiddle.net/cvtwxf6h/22/

我想要 2 种不同的布局,一种用于登录用户,另一种用于未登录用户。要显示的布局由索引组件的logged 属性确定。
当我在登录页面中单击“登录”时,“登录”事件应该传播到索引组件以更新 logged 属性并更改布局。由于某种原因,路由器视图没有发出事件,我做错了什么?

(我只是想了解问题,我对实现此目的的替代方法不感兴趣)

【问题讨论】:

    标签: vue.js vuejs2 vue-router


    【解决方案1】:

    问题似乎是router-link 导航到不同的路线(通过to="{name: 'index'}"login 事件发出之前,这会导致事件以某种方式丢失。如果目标路由与当前路由相同(无导航),则事件到达父组件没有问题。

    一种解决方法是在发出事件后使用$router.push() 强制导航

    const LoginPage = {
      template: `<router-link to="" @click.native="switchToLoggedPage({ name: 'index' })">Login</router-link>`,
      methods: {
        switchToLoggedPage(route) {
          this.$emit('login');
          this.$router.push(route);
        },
      },
    };
    

    demo

    【讨论】:

    • 有没有描述事件执行顺序、路线导航等的文档?类似于vue docs 中的那个
    猜你喜欢
    • 1970-01-01
    • 2017-03-06
    • 2019-04-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 2021-12-29
    • 2021-02-02
    • 2021-08-02
    相关资源
    最近更新 更多