반응형
"v-on:" 지시문 을 사용하여 구성 요소에 이벤트 수신기 추가 - VueJ S.
커스텀 핸들러를 추가하려고 합니다.InlineButtonClickHandler
에 대해서<router-link>
컴포넌트click
내가 커스텀을 발산할 수 있도록appSidebarInlineButtonClick
이벤트입니다.
그런데 코드가 안 돼요.내가 뭘 잘못하고 있지?
<template>
<router-link :to="to" @click="InlineButtonClickHandler">
{{ name }}
</router-link>
</template>
<script type="text/babel">
export default {
props: {
to: { type: Object, required: true },
name: { type: String, required: true }
},
methods: {
InlineButtonClickHandler(event) {
this.$emit('appSidebarInlineButtonClick');
}
}
}
</script>
다음 수식자를 추가해야 합니다.
<router-link
:to="to"
@click.native="InlineButtonClickHandler"
>
{{name}}
</router-link>
그러면 루트 요소의 네이티브 클릭 이벤트가 재생됩니다.router-link
요소.
<router-link:to="to">
<span @click="InlineButtonClickHandler">{{name}}</span>
</router-link>
이거 한번 써보세요.
vue 3 및 vue 라우터 4에서는@event
그리고.tag
여기에 따라 소품을 제거하고 대신 사용할 수 있습니다.v-slot
:
const Home = {
template: '<div>Home</div>'
}
const About = {
template: '<div>About</div>'
}
let routes = [{
path: '/',
component: Home
}, {
path: '/about',
component: About
}, ]
const router = VueRouter.createRouter({
history: VueRouter.createWebHashHistory(),
routes,
})
const app = Vue.createApp({
methods: {
test() {
console.log("test")
}
}
})
app.use(router)
app.mount('#app')
<script src="https://unpkg.com/vue@3"></script>
<script src="https://unpkg.com/vue-router@4"></script>
<div id="app">
<h1>Hello App!</h1>
<p>
<router-link to="/" v-slot="{navigate}">
<span @click="test" role="link">Go to Home</span>
</router-link>
<br/>
<router-link to="/about">Go to About</router-link>
</p>
<router-view></router-view>
</div>
언급URL : https://stackoverflow.com/questions/42091805/add-event-listener-to-router-link-component-using-v-on-directive-vuejs
반응형
'programing' 카테고리의 다른 글
계산된 Ajax가 있는 Vuex 작업이 업데이트되지 않음 (0) | 2022.08.10 |
---|---|
Vuex 변환 업데이트 상태, 계산된 속성이 마크업에 업데이트를 반영하지 않음 (0) | 2022.08.10 |
Vue 구성 요소가 getter 데이터로 다시 로드되지 않음(반응 없음) (0) | 2022.08.10 |
Vue 템플릿 요소의 일부를 코멘트 아웃합니다. (0) | 2022.08.10 |
다른 기능에 할당되어 있는 빈 메모리가 있습니까? (0) | 2022.08.10 |