inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex

[리팩토링] mutations로 할 일 추가, 완료, 모두 삭제 구현

리스트 삭제 효과

722

한아링

작성한 질문수 23

1

안녕하세요 강사님 

리스트에서 항목 한개를 삭제했을 떄 효과가 저랑 강사님이랑 달라서 문의드립니다..!

예를들어 리스트가 1, 2, 3, 4, 5 라는 5개의 리스트가 있을 때

첫 번째 리스트의 휴지통 아이콘을 클릭하면

강사님은 첫 번쨰 리스트의 위치에서 사라진다면

저는 다섯번째 (마지막줄) 리스트에 삭제 효과가 들어가고 1번이 삭제됩니다..ㅠㅠ

어떤 부분을 확인해봐야할까요..?

(TodoList.vue)

<template>
  <div>
    <transition-group name="list" tag="ul">
      <li v-for="(todoItem, index) in this.$store.state.todoItems" v-bind:key="index" class="shadow">
        <i class="checkBtn fas fa-check" v-bind:class="{checkBtnCompleted: todoItem.completed}" v-on:click="toggleComplete(todoItem, index)"></i>
        <span v-bind:class="{textCompleted: todoItem.completed}">{{ todoItem.item }}</span>
        <span class="removeBtn" v-on:click="removeTodo(todoItem, index)">
          <i class="fas fa-trash-alt"></i>
        </span>
      </li>
    </transition-group>
  </div>
</template>

<script>
/* eslint-disable no-console */

export default {
  methods: {
    removeTodo(todoItem, index){      
      // this.$emit('removeItem', todoItem, index);
      this.$store.commit('removeOneItem', {todoItem, index});
    },
    toggleComplete(todoItem, index){
      // this.$emit('toggleItem', todoItem, index)
      this.$store.commit('toggleOneItem', {todoItem, index})
    }
  }
}
</script>

<style scope>
ul {list-style-type:none;padding-left:0;margin-top:0;text-align:left}
li {display:flex;min-height:50px;height:50px;line-height:50px;margin:0.5rem 0;padding:0 0.9rem;background:white;border-radius:5px}
.removeBtn {margin-left:auto;color:#de4343;}
.checkBtn {margin-right:5px;line-height:45px;color:#62acde}
.checkBtnCompleted {color:#b3adad}
.textCompleted {text-decoration:line-through;color:#b3adad}

/* 리스트 아이템 트렌지션 효과 */
.list-enter-active, .list-leave-active {
  transition: all 1s;
}
.list-enter, .list-leave-to /* .list-leave-active below version 2.1.8 */ {
  opacity: 0;
  transform: translateY(30px);
}
</style>

vuejs javascript vuex es6

답변 1

0

캡틴판교

안녕하세요 아라님, 올려주신 코드는 크게 문제가 없으신 것 같고 다만 리스트에 데이터가 중복되서 들어가는 경우에 엉뚱한 리스트가 삭제되는 것처럼 보이는 것 같네요. 데이터 추가하는 코드에 중복 관련 처리 해주시고 리스트의 데이터가 중복되지 않는 상황에서 다시 한번 해보시겠어요? :)

깃권한요청드립니다

0

80

1

Chrome 개발자 모드 확장이 안됨

0

482

1

깃 권한 요청드립니다

0

177

1

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

0

189

1

vuex + axios 질문 있습니다!

1

272

2

깃 권한 요청드립니다!

0

213

1

강의 깃주소 문의

0

188

1

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

1

357

2

Vue가 인식되지 않는 현상

0

265

1

기초강좌는 어디있나요?

1

253

2

App.vue가 필요한 이유

0

256

1

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

1

318

1

뷰 라이프사이클

1

237

1

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

1

449

3

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

1

350

1

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

1

475

2

export default 관련한 질문

0

427

2

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

1

416

2

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

1

341

2

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

1

379

2

addTodo Helper 함수 적용

1

286

1

vuex 헬퍼 전역 설정

1

331

2

github 권한요청드립니다.

1

307

2

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

1

282

2