javascript - Vue 3 : Emit event from child to parent

标签 javascript vue.js vue-component

我最近开始使用 Vue 3 创建一个应用程序,但在尝试将事件从子级发送到父级时,我遇到了身份验证问题。这是我的代码示例:

child

<template>
  <form class="msform">
    <input @click="goToLogin" type="button" name="next" value="Login" />
  </form>
</template>

<script>
import Cookies from "js-cookie";

export default {
  emits:['event-login'],
  methods: {
    goToLogin() {
      this.$emit("event-login");
    },
  },
};
</script>

父级

<template>
  <login v-if='loggedIn' @event-login='logIn'/>
  <div class="my-page">
    <router-view/> 
  </div>
</template>

<script>
import Cookies from "js-cookie";
import Login from '../pages/Login'

export default {
  name: "MainLayout",
  components:{
    "login":Login
  },
  data() {
    return {
      loggedIn: false,
    };
  },
  methods: {
    logIn() {
      this.loggedIn = true;
    }
  }
}

我不知道为什么事件没有在父级处理,请问我能得到一些帮助吗?

最佳答案

您正在监听 login 的单独实例上发出的事件。

router-view 仍然只是一个组件,与其他任何组件一样,因此请尝试将处理程序移到那里:

<template>
  <login v-if='loggedIn' />
  <div class="my-page">
    <router-view @event-login='logIn' /> 
  </div>
</template>

关于javascript - Vue 3 : Emit event from child to parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65675337/

相关文章:

javascript - .each 不工作分开的部分

mysql - 我无法在docker compose中进行mysql php artisan迁移。错误SQLSTATE [HY000] [2002]

vue.js - vee-validate 不工作的基本示例

javascript - VueJS - 有条件地包裹在 div 内

javascript - Vue中如何实现任意两个元素之间的通信?

javascript - jquery datepicker datepicker beforeShowDay 明年不起作用

javascript - Google 仪表图表给出未知 header 类型 : 24

javascript - 用于 Google 的 Jquery 脚本,如鼠标悬停时的 POP Up 图像

html - electron/vuejs - 在子组件内部时 uikit 模态不覆盖整个屏幕

javascript - 自定义 Prop 类型 Vue.js