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

JIYEON KIM님의 프로필 이미지
JIYEON KIM

작성한 질문수

[리액트 1부] 만들고 비교하며 학습하는 리액트 (React)

[순수JS 1] 검색결과 2(실습)

reset() 함수 작성 관련 문의드립니다.

작성

·

293

0

안녕하세요.

저는 아래와 같이 Controller에서는 Store의 reset()함수를 호출만하고, Store에서 상태를 변경하는 방식으로 작성했는데요.

// Controller.js

export default class Controller {
  constructor(store, { searchFormView, searchResultView }) {
    this.store = store;

    this.searchFormView = searchFormView;
    this.subscribeViewEvents();
  }

  subscribeViewEvents() {
    this.searchFormView //
      .on("@reset", () => this.reset());
  }

  reset() {
    console.log(tag, "reset");
    this.store.reset(); // 작성한 부분
    this.render();
  }
}
// Store.js

export default class Store {
  constructor(storage) {
    console.log(tag, "constructor");

    if (!storage) throw "no storage";

    this.storage = storage;

    this.searchKeyword = "";
    this.searchResult = [];
  }

  // 작성한 부분
  reset() {
    this.searchKeyword = "";
    this.searchResult = [];
  }
}

강사님 풀이는 다음과 같이, Controller에서 store의 상태값을 직접 넣어주는 식으로 작성을 하셨더라구요.

// Controller.js

...

reset() {
    console.log(tag, "reset");

    this.store.searchKeyword = "";
    this.store.searchResult = [];
    this.render();
  }

둘 다 기능상의 차이는 없는 것 같은데, 혹시 둘 중 선호되는 방식이 있는지 궁금합니다.

답변 1

3

김정환님의 프로필 이미지
김정환
지식공유자

저는 컨트롤러에서 직접 스토어 내부 변수를 초기화했는데요. 이렇게 스토어 메소드로 분리하니깐 역할분담이 더 잘된것 같네요. 저는 JIYEON KIM 님 코드가 더 좋습니다.

JIYEON KIM님의 프로필 이미지
JIYEON KIM
질문자

답변 감사합니다!

JIYEON KIM님의 프로필 이미지
JIYEON KIM

작성한 질문수

질문하기