강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của jaejung6030459
jaejung6030459

câu hỏi đã được viết

Tìm hiểu các kỹ năng thực hành front-end của Vuejs, Vuex và Vue-Router thông qua phát triển Trello

Áp dụng Vuex - Kiểm tra danh sách bảng

보드를 추가했을 때 추가한 보드에 대한 화면 업데이트(?) 갱신(?)에 관한 질문입니다.

Viết

·

280

0

혼자서 복습하던 중 AddBoar.vue는 화면에 보드를 추가하는 것이고 Home.vue에서는 추가한 보드를 포함한 모든 보드를 갱신하는 역할이라고 생각하여 코드를 짰습니다. 아래와 같은 코드로요.

// Home.vue

fetchData() {
  this.loading = true;
  this.FETCH_BOARDS().finally(data3 => {
    console.log("data3 =", data3);
    this.loading = false;
  });
},

// Board.vue

addBoard() {
  this.SET_IS_ADD_BOARD(false);
   this.ADD_BOARD({ title: this.input })
}

여기서 문제점이 보드를 추가하자마자 추가한 보드는 화면에 갱신이 안됩니다. 그리고 새로 고침이나 다른 컴포넌트를 갔다가 들어오면 추가한 보드가 화면에 갱신이 됩니다.

그래서 기존의 소스 코드를 참고하여 틀린 부분을 고친 후, 보드를 추가했을 때 Vuex의 actions에 FETCH_BOARD하는 부분에 대한 로그를 찍어봤습니다.

// Home.vue
fetchData() {
  this.loading = true;
  this.FETCH_BOARDS().finally(data3 => {
    console.log("data3 =", data3);
    this.loading = false;
  });
},

// Board.vue
addBoard() {
  this.SET_IS_ADD_BOARD(false);
   this.ADD_BOARD({ title: this.input }).then(data1 => {
    console.log("data1 =", data1);
    this.FETCH_BOARDS().then(data2 => {
      console.log("data2 =", data2);
    });
  });
}

화면 상에서 Create new board...라는 보드를 클릭하였을 때, 추가한 보드가 바로 화면에 갱신이 되고

console.log를 찍어보면 

data3, data1, data2 순으로 출력이 됩니다. 왜 이러는 지 이유를 혹시 알 수 있을까요? 

자식 컴포넌트에서 무언가가 바뀌면(?) 이와 관련된 상위 컴포넌트부터 해당 자식 컴포넌트까지 가상 돔 트리가 생성이 되고, 상위 컴포넌트부터 자식 컴포넌트까지 순차적으로 바뀌니까 이런 현상이 발생한 건가요? 

vuejsjavascript

Câu trả lời 1

0

jeonghwan님의 프로필 이미지
jeonghwan
Người chia sẻ kiến thức

홈에 들어와서 Home.vue의 로그가 찍히고(data3) 

보드 추가할때 ADD_BOARD 로직이 수행된 다음(data1)

다시 데이터를 가져오는 FETCH_BOARDS 로직이 실행되닌깐(data2)

이런 순서대로 나오는 것 같아요. 혹시 어떤 순서를 기대하셨을까요? 

Hình ảnh hồ sơ của jaejung6030459
jaejung6030459

câu hỏi đã được viết

Đặt câu hỏi