inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[React 1부] 만들고 비교하며 학습하는 React

[순수JS 2] 탭 3(풀이)

각 탭을 클릭할때 active class 변화 책임

212

코드DOS

작성한 질문수 6

0

각 탭을 클릭할때 탭의 active class 변화의 책임이 TabView.js에 있다고 생각해서 TabView클래스 안에서 처리하도록 했습니다.

선택된Tab의 상태를 Controller에게 알리기 전에 View에서 선택된 Tab을 render를 하는것이 MVC 패턴에서 어긋나는 부분인가요?

아래 코드 : 탭상태변화를 바로 View에 반영하고  이벤트발생

  // ✨
  bindEvents() {
    this.element.addEventListener("click", this.handleTabClick.bind(this));
  }
  // ✨
  handleTabClick(e) {
    this.show(e.target.dataset.tab);
    this.emit("@tabChanged", { tab: e.target.dataset.tab });
    e.stopPropagation();
  }

전체코드

export default class TabView extends View {
  constructor() {
    console.log(tag, "constructor");
    super(qs("#tab-view"));
    this.template = new Template();
    // TODO
    this.bindEvents();
  }
  // ✨
  bindEvents() {
    this.element.addEventListener("click", this.handleTabClick.bind(this));
  }
  // ✨
  handleTabClick(e) {
    this.show(e.target.dataset.tab);
    this.emit("@tabChanged", { tab: e.target.dataset.tab });
    e.stopPropagation();
  }

  show(selectedTab) {
    this.element.innerHTML = this.template.getTabList();
    qsAll("li", this.element).forEach((li) => {
      li.className = li.dataset.tab == selectedTab ? "active" : "";
    });
    super.show();
  }
  // this가 이벤트 객체로 바인딩 되었다.
  // this --- e.currentTarget
  // this --- TabView
}

MVC react

답변 1

0

김정환

역할 부여하는 것은 관점에 따라 얼마든지 달라질 수 있다고 생각합니다. 말씀하신대로 TabView의 역할이라고 생각하고 진행하셔도 괜찮습니다. 

리액트 1,2부 이후 후속 강의나 준비 중인 다른 강의가 있으신가요?

1

112

2

super.show() 호출하는 이유가 궁금합니다.

1

101

2

class와 constructor를 이용한 객체 지향 프로그래밍

0

240

2

mvc 패턴 질문

0

209

2

Cannot read properties of undefined (reading 'props')

0

290

2

delegate, emit 필요한 이유

0

206

2

어떤거를 먼저 들어야 하는지 도와주세요

1

275

1

localhost:8080 접속 불가

1

296

1

최근검색어 3 풀이에서

1

195

1

import 문제

1

246

1

자동변환 관련

1

213

1

sort() 질문 드립니다.

1

312

2

reset 시점에 searchResult 빈 배열로 update

2

320

2

Button에 Onclick사용

1

260

1

npx lite-server error 확인 요청드립니다.

1

482

2

node 20이상 쓸때 꿀팁

4

778

3

디버깅 관련질문이 있습니다.

1

306

1

[순수JS2]탭 3(풀이) 질문있습니다.

1

232

1

추상화를 어떻게 받아들이면 될까요??

1

446

1

on 메서드 eventName 문의

1

268

1

import에 관해서 질문드립니다

1

262

1

view.js의 on 메소드에 대해 질문드립니다

1

263

1

componentDidMount에서 getKeywordList()를 하는 이유

1

248

1

[순수JS1]검색폼2_git branch 이동관련

1

283

1