inflearn logo
강의

Course

Instructor

Vue.js Intermediate Course - Learn Vue.js, ES6, Vuex by Building a Web App

[Refactoring] To-do Completion Feature

toggleOneItem > 안티패턴에 대해

748

blockjjam99

1 asked

1

안녕하세요. Vue.js 중급편을 듣고 있는 수강생입니다.

다름이 아니라, App.vue > toggleOneItem의 이벤트로 넘어온 todoItem을 수정하는 것이 안티패턴이라고 하신 것은 이해가 되었는데,
localStorage.setItem(todoItem.item, JSON.stringify(todoItem));

에서는 todoItem을 그대로 사용하여, localStorage에 저장하는 방식은 조금 이해가 되지 않습니다. 위 문단의 안티패턴과는 상관없지만 this.todoItems[index]의 필드 수정된 것이 todoItem이 참조하고 있기 때문에 변경 처리되었으니 localStorage에 저장한다는 의미가 되는데, 굳이 그렇게 하는 것보다는 명확하게 하기 위해서

이벤트로 index만 받고,

toggleOneItem: function (index) {
      let todoItem = this.todoItems[index]
      todoItem.completed = !todoItem.completed
      localStorage.removeItem(todoItem.item)
      localStorage.setItem(todoItem.item, JSON.stringify(todoItem));
},

이렇게 했을 때, App 컴포넌트의 todoItems를 핸들링하는 것을 명확하게 알 수 있지않을까 했습니다.

안티패턴 이벤트 vuejs es6 javascript vuex

Answer 1

0

captain

안녕하세요, 스토리지 레벨에 저장할 때는 데이터 값이 필요하므로 localStorage.setItem(todoItem.item, JSON.stringify(todoItem)); 형태 말고는 더 좋은 방안이 없을 것 같아요. 본문에 첨부해 주신대로 코딩하셔도 상관 없습니다 :)

Chrome 개발자 모드 확장이 안됨

0

254

1

깃 권한 요청드립니다

0

118

1

vue.js 중급 리포지토리 권한 관련

0

118

1

vuex + axios 질문 있습니다!

1

198

2

깃 권한 요청드립니다!

0

161

1

강의 깃주소 문의

0

144

1

router-view에 props를 어떻게 넘길 수 있나요?

1

279

2

Vue가 인식되지 않는 현상

0

205

1

기초강좌는 어디있나요?

1

190

2

App.vue가 필요한 이유

0

192

1

getter가 정의되어 있지 않아 오류가 발생합니다.

1

253

1

뷰 라이프사이클

1

187

1

TSLint 말고 TSLint Vue 설치해도 되나요?

1

367

3

로컬 스토리지는 어디에 있나요?

1

279

1

vuex 실행시 새로고침해야지만 리스트에 나타나는 현상

1

387

2

export default 관련한 질문

0

354

2

깃허브 vue-todo 접근불가에 따른 확인요청

1

354

2

깃허브에 문제있는것 같습니다.

1

273

2

인프런 강의 재생 화면 구성 변경 문의드립니다

1

303

2

addTodo Helper 함수 적용

1

243

1

vuex 헬퍼 전역 설정

1

245

2

github 권한요청드립니다.

1

258

2

이벤트 위치에 대한 궁금증 입니다.

1

223

2

구조 차이에 대한 문의

1

344

2