【发布时间】:2021-04-02 16:21:30
【问题描述】:
我想将事件从子评论传递给父。 我在 vue2 中做了同样的事情,但我不知道如何在 vue3 中这样做。
这是子组件设置方法。
setup(props, { emit }) {
const router = useRouter();
const form = ref(
{
email: "ajay@gmail.com",
password: "123456789",
isLoading: false,
},
);
const user = ref("");
const error = ref("");
function login() {
User.login(this.form).then(() => {
emit('login', true);
// this.$root.$emit("login", true); -- vue2
localStorage.setItem("auth", "true");
router.push('/dashboard');
})
.catch(error => {});
}
return { form, login, user, error};
}
从这里发出 login 方法,我想听听家长的评论。
这是父组件,emit.on 方法在这里不起作用
setup(props, { emit }) {
const router = useRouter();
const state = reactive({
isLoggedIn: false,
});
onMounted(async () => {
emit.on("login", () => { // `vue2` this.$root.$on("login"`
this.isLoggedIn = true;
});
});
【问题讨论】:
-
<child-component @login="parentLogin"></child-component> -
感谢您的回答。 @KamleshPaul 但在我的情况下,我没有在父组件中声明子组件。 (比如
<child-componen></child-componen>。我使用router-link去子组件。知道如何在没有声明子组件的情况下处理发出的事件吗?。