개발Story
Published 2022. 11. 2. 17:10
[Vue]Props & $emit() vue.js/문법

Props란?

부모 컴포넌트에서 자식 컴포넌트로

데이터를 전달할때 사용되어지는

단방향 데이터 전달 방식이다(자식 컴포넌트에서는 Props값의 수정이 불가능하다.)

 

부모 컴포넌트

<javascript />
<!--부모 컴포넌트--> <template> <!--첫번째, 두번째 모두 같은 결과--> <!--첫번째 방법--> <자식컴포넌트이름 :props이름="전달데이터"/> <!--두번째 방법--> <자식컴포넌트이름 v-bind:props이름="전달데이터"/> </template>

자식 컴포넌트 

<javascript />
export default { props: { title: {type : [String,Number], default : 100}, //여러가지 타입 허용 title2: { type: [String,Number], //여러가지 타입 허용 required: true //필수로 전달 받아야함 }, title3: { type: Object, default: () => {} //배열이나 함수의 기본 값은 항상 함수로부터 반환되어야 함 } }, title4: { type: Array, required: true, default: () => { return [1, 2, 3, 4] }, validator: (val) => { return val.length > 5 } } } //default: () => { return [1, 2, 3, 4] } //default: () => { return { abc: 'vasfd' } }

$emit

자식 컴포넌트에서는 props의 값은 변경이 불가하다.

그렇다면 $emit문법을 통해 부모 컴포넌트로 변경값을 보내어 부모의 data변경이 가능하다.

 

부모 컴포넌트

<javascript />
<template> <div> <h1>Welcome to Home</h1> <inputField :title = "title" @titleFromChild="titleChange"/> {{ title }} </div> </template> ... <script> date() { return { title : "" } }, ..., methods: { titleChange(title) { this.title = title } } </script>

부모 컴포넌트에서 새로 생성한 titleChange 메서드는 부모의 this.title 값을 titleChange 메서드가 titleFromChild 메서드로부터 받아오는 인자값 title로 지정해주게 된다.

 

자식 컴포넌트

<javascript />
<input type="text" :value = "title" @input = "titleUpdate" style = "padding: 20px; border: 1px pink solid"> ... <script> methods : { titleUpdate(e) { this.$emit('titleFromChild', e.target.value) } } </script>

부모에서 바인딩 해준 titleFromChild 을 $emit("titleFromChild ",e.target.value )를 실행시켜 props값을 변경시킨다.

 

https://whitepro.tistory.com/255

https://goodmemory.tistory.com/145

'vue.js > 문법' 카테고리의 다른 글

[VUE] v-for key속성 사용하는 이유  (0) 2023.04.16
[VUE] composition api 배경.  (0) 2023.03.05
[Vue] Mixins & Extends  (0) 2022.12.11
[Vue]Computed 와 Watch 사용예제  (0) 2022.02.03
profile

개발Story

@슬래기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!