Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 커스텀
- 폰트적용하기
- 리액트
- 누구나 자료구조와 알고리즘
- 반복줄이기
- typescript
- 티스토리꾸미기
- NonNullable
- javascript
- 개발콘텐츠
- utilty type
- CSS
- JS console
- 2022
- click and drag
- 성능최적화
- returnType
- 레이아웃쪼개기
- reactjs
- const 단언문
- 제네릭
- 타입스크립트
- 타입좁히기
- Chart.js
- 공통컴포넌트
- react
- vue.js
- React.js
- TSDoc
- React Native
Archives
- Today
- Total
몽땅뚝딱 개발자
[Vue.js] Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "visible" 본문
에러일지/Vue.js
[Vue.js] Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "visible"
레오나르도 다빈츠 2022. 1. 23. 14:04
에러
Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "visible"
원인
결론부터 말하면 부모 컴포넌트에서 넘겨준 값을 자식 컴포넌트에서 props로 받은 상태에서 그 값을 자식 컴포넌트에서 변경하려고 할 때 생기는 에러이다.
Vue의 데이터흐름은 '단방향'으로, 부모 -> 자식으로 넘겨주는 것은 가능하지만 자식 컴포넌트에서 값을 바꾸면 부모의 값이 변경되지 않는다.
따라서 자식에서 부모가 넘겨준 값을 변경하거나 바꾸는 등의 처리가 필요한 경우, $emit으로 이벤트명과 함께 value를 부모에게 넘겨주어 부모의 method에서 처리할 수 있도록 해야한다.
해결
원래는 이렇게 부모가 넘겨준 'visible'이라는 값을 자식에서 변경하고 있었다.
// 자식 컴포넌트
closeTermsModal() {
this.visible = false
}
아래와 같이 부모에서 처리할 수 있도록 $emit을 사용하여 넘겨주면 해결된다.
<!-- 부모 컴포넌트의 HTML -->
<comp-dialog-term
:visible="isShowTermsModal"
@closeTermsModal="closeTermsModal"
/>
// 자식 컴포넌트
closeTermsModal() {
this.$emit('closeTermsModal', false)
}
// 부모 컴포넌트
closeTermsModal(val) {
this.isShowTermsModal = val
}
개인적으로 공부한 내용을 정리하는 블로그로
잘못된 개념을 게시하지않도록 주의하고 있으나 오류가 있을 수 있습니다.
'에러일지 > Vue.js' 카테고리의 다른 글
Comments