[Vue.js] 상위 구성 요소에 의해 정의된 이벤트 동적을 하위 구성 요소 내 목록 렌더링 버튼에 대응하는 예제 코드
9754 단어 Vue.js
입문
서브어셈블리의 목록 렌더링 버튼
↕
상위 어셈블리에 정의된 이벤트
동적으로 대응하고 싶어서 샘플 코드를 남겼어요.
※ 복제품으로 행동을 확인할 수 있습니다.
환경
OS: macOS Catalina 10.15.3
Vue: 2.6.10
결론: 결과 출력
모든 단추는 단독의 방법이 있다.
서브어셈블리
Child.vue
<template>
<div id="child">
<h1>{{ title }}</h1>
<!-- 親コンポーネントのbtns内のオブジェクト数に応じてbuttonの数を変更する -->
<div v-for="btn in btns" :key="btn.id">
<!-- $emitにて、親コンポーネントでv-onに指定する名前、第2引数には親コンポーネントに渡したい値をセット -->
<button @click="$emit('click-button', btn.action)">{{ btn.name }}</button>
</div>
</div>
</template>
<script>
export default {
name: 'Child',
props: {
title: String, //型を指定しておくと予定外の型になった場合エラーが出て気付ける
btns: Array,
}
}
</script>
상위 어셈블리
Parent.vue
<template>
<div id="parent">
<!-- 子コンポーネントからpropsで渡した属性を親コンポーネントで指定 -->
<Child
title="Chile to Parent"
:btns='btns'
@click-button="toggleClick"
></Child>
</div>
</template>
<script>
import Child from './Child.vue'
export default {
name: 'Parent',
components: {
Child,
},
data() {
return {
//表示したい数だけbtnsにオブジェクトを記載
btns: [
{id: 1, name: 'run console.log', action: 'consoleLog'},
{id: 2, name: 'run alert', action: 'alert'},
{id: 3, name: 'run console.error', action: 'error'}
]
}
},
methods: {
//どのメソッドを発火するかを動的に変更するために定義
toggleClick(action) {
if (action === "consoleLog") {
this.consoleLog() //thisをつけることで親コンポーネントで定義済のメソッドと紐づく
} else if (action === "alert") {
this.alert()
} else if (action === "error") {
this.error()
}
},
//実際に発火するメソッド
consoleLog() {
console.log('one!')
},
alert() {
alert('two!')
},
error() {
console.error('three!')
}
}
}
</script>
끝내다
끝까지 읽어주셔서 감사합니다
누구한테 참고가 됐으면 좋겠어요
참고로 사이트 (항상 감사합니다)
Reference
이 문제에 관하여([Vue.js] 상위 구성 요소에 의해 정의된 이벤트 동적을 하위 구성 요소 내 목록 렌더링 버튼에 대응하는 예제 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/terufumi1122/items/c1ca3a0e4f551ac5db3e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)