Vue.js 자식에서 부모로 데이터 전송하기 (객체 일부값만 변경하는법)

2022. 2. 21. 22:22·과거의 이력/Vue.js

부모 컴포넌트에서 데이터 바인딩을 통해 자식 컴포넌트로 데이터를 전달한다.

(v-bind 디렉티브 사용!)

 

자식컴포넌트에서 데이터 변경이 발생시

v-on으로 선언된 함수로 데이터를 전송해 변경할 수 있다.

 

이때, 객체의 일부값만 변경하고싶다면 Object.assign 을 활용할 수 있다.

 

 

 

1. 부모에서 자식으로 데이터 전달하기

 

/* 부모컴포넌트 */
<template>
  <child
    :item="item"
    @updateData="updateData">
  </child> /* 자식컴포넌트 */
</template>

<script>
export default {
  data () {
     item: { 'id': 1, 'width': 10 }
  },
  
  method: {
    updateData () {
      Object.assign(this.item, param) /* 특정 */
    }
  }
}
</script>

위와같은 구조일때,

부모 컴포넌트에서 item 이라는 변수를 자식컴포넌트(child)에 바인딩 하였다.

 

자식컴포넌트에서 해당 데이터를 전달받아

아래의 방식으로 부모에게 전달할 수 있다.

 

 

2. 자식 컴포넌트에서 데이터 변경 후 부모로 전달하기

/* 스크립트부분 */

export default {

  props: ['item'],
  
  methods: {
    
    /* item의 id의 값을 변경하는 함수 */
    testFunc () {
      let newData = { 'id': 10 }
      this.$emit('updateData', newData)
    }
    
  }

}

자식컴포넌트의 testFunc가 부모로부터 전달받은 데이터를 변경하는 함수이다.

로직을 살펴보면 this.$emit 을 통해 부모로 변경된 데이터를 전송하는것을 확인할 수 있다.

 

 

3. 자식에서 변경된 데이터 부모에 반영하기

 

 

부모컴포넌트에서는 v-on 디렉티브로 자식의 이벤트를 전달받는다.

또한 자식에서 item 변수의 id값만 일부 변경하였으므로,

변경사항만 객체에 반영하기 위해 Object.assign 메소드를 사용하였다.

/* 부모컴포넌트 스크립트 */

updateData (param) {
  Object.assign(this.item, param)
}

 

 

 

 

 

 


참고링크 1. (vue.js 디렉티브) : https://v3.ko.vuejs.org/api/directives.html#v-text

 

참고링크 2. (props) :  https://vuejs.org/guide/components/props.html

'과거의 이력 > Vue.js' 카테고리의 다른 글

[vue.js] 요소 외부클릭 감지하기 (외부클릭시 요소 변경)  (0) 2022.07.05
[웹팩] webpack.config.js VS vue.config.js  (0) 2022.05.31
[웹팩] Vue에 jquery 전역 등록하기  (0) 2022.05.17
Vue.js 플러그인 사용하기 (install, use 메소드)  (0) 2022.05.16
main.js 공통함수 전역 선언하기  (0) 2022.05.16
'과거의 이력/Vue.js' 카테고리의 다른 글
  • [웹팩] webpack.config.js VS vue.config.js
  • [웹팩] Vue에 jquery 전역 등록하기
  • Vue.js 플러그인 사용하기 (install, use 메소드)
  • main.js 공통함수 전역 선언하기
정많이 정만이
정많이 정만이
jeongmany
  • 정많이 정만이
    정많이 정만이
    정많이 정만이
  • 전체
    오늘
    어제
    • 분류 전체보기 (80)
      • 과거의 이력 (71)
        • CS (12)
        • 프론트엔드 (4)
        • javascript (21)
        • Vue.js (7)
        • bootstrap (1)
        • [그리드] ag-grid (3)
        • [그리드] vue-grid-layout (1)
        • HTML_CSS (5)
        • NPM (1)
        • [차트]highcharts (0)
        • JAVA (9)
        • 백엔드 (1)
        • 기본개념 (손필기) (5)
        • 프로그래머스 (1)
      • 알고리즘 (6)
      • 통계 (9)
        • 통계지식 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    webpack.config.js
    CSS
    js
    알고리즘
    반복문
    객체
    vue.js
    우분투
    aggrid
    코딩테스트
    ag-grid
    자바스크립트
    vue
    vue.config.js
    java
    공유메모리
    bootstrap
    개발자
    ubuntu설치
    cs
    js map
    Webpack
    버추얼박스
    JavaScript
    vuejs
    ES6
    selectbox
    ubuntu
    HTML
    VirtualBox
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
정많이 정만이
Vue.js 자식에서 부모로 데이터 전송하기 (객체 일부값만 변경하는법)
상단으로

티스토리툴바