티스토리 뷰
컴포넌트를 재사용하는게 좋을 것 같아 props가 필요해졌다. vue에서는 props를 어떻게 넘기는지 알아봤다.
먼저 부모 컴포넌트에서 데이터를 넘겨준다. 넘겨주는 값의 이름을 정하고 :를 붙이면 된다. 나는 lanType과 select라는 props를 넘겨줬다.
그리고 신기하게 vue에서는 넘기는 값의 ""의 내부가 자바스크립트 코드를 쓸 수 있는 범위인 것 같다. "" 안에 그냥 쓰면 변수이고, 문자열을 넣고 싶으면 따옴표로 감싸줘야 한다. 그래서 '한국어'와 'English'라는 문자열을 넘길 때 안에서 작은따옴표로 감싸서 문자열을 넘겨줬다.
// 부모 컴포넌트의 <template /> 태그 내부
<LanBtn
id="kr"
:lanType="'한국어'"
:select="data.activeKr"
@click="changeButtonState"
/>
<LanBtn
id="en"
:lanType="'English'"
:select="!data.activeKr"
@click="changeButtonState"
/>
부모 컴포넌트에서 값을 넘겨줬으면 이제 자식 컴포넌트에서 값을 받아야한다. props 객체 안에 넘겨준 값의 이름을 키, 대문자로 시작하게 타입을 값으로 적는다. 정확하지는 않지만 값으로 넣는 타입은 정해져 있는 것 같아 원하는 타입은 넣을 수는 없는 것 같다...🤔
// 자식 컴포넌트
<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
props: {
lanType: String,
select: Boolean,
},
});
</script>
그리고 props를 변수 사용하듯 똑같이 사용하면 된다.
// 자식 컴포넌트
<template>
<button class="lan-btn" :class="select ? 'select' : null">
{{ lanType }}
</button>
</template>
함수를 props로 넘기는 방법도 찾아봤는데 vue에서는 부모 컴포넌트의 state를 변경하려면 해당 state를 변경하는 setState 함수를 전달받는 게 아니라 emit이라는 약속된 함수를 사용해서 state를 변경하는 것 같다. 아직은 필요하지 않으니 다음에 필요할 때 찾아보는 것으로..!
+
props 넘기는 방법을 알아냈으나 굳이 분리할 필요가 없다고 생각돼서 다시 원상복구했다...ㅎ...😂
728x90
'TIL' 카테고리의 다른 글
TIL 230801 [Vue] v-for, ref, v-model, vue 문법 (0) | 2023.08.01 |
---|---|
TIL 230731 [Vue] emit으로 부모 컴포넌트 함수 실행하기 (0) | 2023.07.31 |
TIL 230720 로컬 스토리지를 자주 쓰고 지우면 하드디스크가 늙는다... (0) | 2023.07.20 |
TIL 230718 [Vue] 부모 컴포넌트에서 자식 컴포넌트 사용하기 (0) | 2023.07.18 |
TIL 230712 [Vue] 변수로 class 넣기 & 클릭이벤트 추가하기 (0) | 2023.07.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- vscode
- javascript
- TS
- js
- map
- 코드잇
- git
- 회고
- Typescript
- 스파르타코딩클럽
- 제로초
- scss
- 리액트
- 타입스크립트
- 자바스크립트
- 드림코딩
- React
- vue
- 비주얼스튜디오코드
- 깃
- 김버그
- Til
- CSS
- Python
- 저스트코드
- 파이썬
- 코딩앙마
- html
- 제이쿼리
- 구름에듀
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함