강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

통풍환자님의 프로필 이미지
통풍환자

작성한 질문수

Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념

라우터 네비게이션을 이용한 데이터 호출 방법

깜빡거림 문제 state 질문드립니다.

작성

·

826

3

실습 내용과 동일하게 진행중인데 깜박거림이 해결되지 않습니다. 몇시간을 삽질 했는데 이상한 부분이 있어서 질문드립니다.콘솔을 찍어보면 이상한 화면을 두번 뿌리는 부분이 있어서 깜빡거림이 있는데 무엇이 잘못된건지 모르겠습니다.

routes/index.js

    {
      path: "/news",
      name: "news",
      component: NewsView,
      //component: CreateLiteView("news"),
      beforeEnter: (to, from, next) => {
        //라우터가드
        console.log(3);
        Bus.$emit("start:spinner");
        store
          .dispatch("FETCH_LIST", to.name)
          .then(() => {
            console.log(6);
            next();
          })
          .catch((error) => console.log(error));
      },
    },

store/actions.js

  FETCH_LIST({ commit }, pageName) {
    console.log(4);
    return fetchList(pageName)
      .then(({ data }) => {
        console.log(5);
        commit("SET_LIST", data);
      })
      .catch((error) => {
        console.log(error);
      });
  },

components/ListItem.vue

export default {
  computed: {
    listItems() {
      console.log("data");
      return this.$store.getters.fetchedList;
    }
  }
}

mixin/ListMixin.js

import Bus from "../utils/bus.js";
export default {
  mounted() {
    Bus.$emit("end:spinner");
  },
};

콘솔로그 순서로 보면

처음 뉴스페이지에서 새로고침시 3>4>5>6>data 가 찍히고

다음질문페이지로 넘어가면 3>4>5>6>data>data 가 두번 찍힙니다.

깜빡거린다고 말씀주신 부분은 고쳐지지 않네요 ㅠ

store/index.js

  state: {
    news: [],
    ask: [],
    jobs: [],
    list: [],
    user: {},
    item: {},
  },

state 부분을 삭제 해봤더니 data도 하나 찍히고 정상이에요.

state없이도 getters가 되는가 싶기도 하고 영문을 모르겠습니다. 

vue 개발자 도구에서도 vuex에 sate가 등록되어있습니다. 분명히 제거했는데.. ㅠ

---------------------추가----------------

깃에서 13번 브랜치 받아서 돌려봤는데 동일하게 깜빡 거리긴 하네요.  마찬가지로  store에서 state를 없애니깐 엄청 잘됩니다. 

답변 1

1

캡틴판교님의 프로필 이미지
캡틴판교
지식공유자

안녕하세요 통풍환자님, 상세한 내용 첨부해 주셔서 감사합니다. 깜빡 거린다는 부분이 제가 정확히 잘 이해가 안가네요..! 완벽 가이드는 중간에 비동기 처리를 잘못한 부분이 있어서 강의 끝까지 수강해 보시면 아마 궁금증이 풀리실 것 같아요. 다 듣고 더 궁금한 점 있으면 알려주세요! :)

통풍환자님의 프로필 이미지
통풍환자

작성한 질문수

질문하기