55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
권한요청드립니다!
인프런 아이디 : seajin97@g.shingu.ac.kr인프런 이메일 : seajin97@g.shingu.ac.kr깃헙 아이디 : seajin97@g.shingu.ac.kr깃헙 Username : simsimhang 한번 권한 받았었는데 시간이 지나니까 권한이 사라져있습니다
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
권한요청드립니다!
권한 요청 드립니다.인프런 아이디 : koorihime@naver.com인프런 이메일 : koorihime@naver.com깃헙 아이디 : koorihime@naver.com깃헙 Username : minhyuck woo
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃허브 권한 부탁드립니다.
인프런 아이디: jhpark@nicednr.co.kr인프런 이메일: jhpark@nicednr.co.kr깃헙 아이디: leehot2665@naver.com깃헙 Username: Zero-Human
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청드립니다
인프런 아이디: gil인프런 이메일: gil@projectlien.co.kr깃헙 아이디: gilha.leee@gmail.com깃헙 Username: gilhalee깃헙 권한 요청 부탁드립니다
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 재요청 드립니다.!!
깃헙 권한 재요청 드립니다! 인프런 아이디 : jungsr417@hanwha.com인프런 이메일 : jungsr417@hanwha.com깃헙 아이디 : jungsr417깃헙 Username : jsr 감사합니다.
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
토글 부분에서 리팩토링이 되지 않아 질문드립니다.
저는 getTime() 으로 타임을 받아서 value 부분을 객체로 만들어서 넘기고 있었습니다.store에서 sort 기능을 추가하였고완료된건을 아래로 넘기는 작업을하고 완료되지않은 건은 위로 올려서 나뉘게 작업하였습니다.그런대 이전에 store을 쓰지않을때는 단순하게 토글할때 sort를 함수로 만들어서 호출하였더니 잘되었습니다.store에 함수로 만들고 호출하고 나서는 리팩토링이 되지 않습니다 ㅠㅠ새로고침했을때는 잘 작동합니다. 또한 console창에도 바뀐 로직으로 잘 뜹니다.toggleOneItem 부분 봐주시면 감사합니다fetch부분에서는 잘되어서 리스트 가져올땐 잘되었는대 ㅠㅠ 토글하면서 잘 안돼더라구요!제가 어떤것을 실수 했을까요..? import Vue from "vue"; import Vuex from "vuex"; Vue.use(Vuex); //글로벌하게 Vuex를 쓰겠다는 의미 //해당 라이브러리를 사용하기 위한 초기화 코드를 실행하는 구문 //뷰에 연결해야 vuex를 사용할 수 있다 let sortItem = []; function sortlist(state) { const trueItem = state.filter( (item) => item.completed === true ); const falseItem = state.filter( (item) => item.completed === false ); trueItem.sort(function (a, b) { return b.value.time - a.value.time; //내림차순 }); falseItem.sort(function (a, b) { return b.value.time - a.value.time; //내림차순 }); sortItem = [...falseItem, ...trueItem]; return sortItem; } const storage = { fetch() { //네트워크의 리소스를 쉽게 비동기적으로 가져오기 //app에 있는 created를 store에 붙이기 let arr = []; if (localStorage.length > 0) { for (let i = 0; i < localStorage.length; i++) { if (localStorage.key(i) !== "loglevel:webpack-dev-server") { const item = localStorage.getItem(localStorage.key(i)); arr.push(JSON.parse(item)); //arr배열을 만들어서 푸시해주기 sortlist(arr); } } } return sortItem; // {} 단위밖에서는 arr을 호출할 수 없으므로 return 반환 }, }; // //다른 컴포넌트에서 this.$store 로 사용할 수 있음 export const store = new Vuex.Store({ state: { headText: "TODO it!", //헤더에 들어갈 값 등록하기 //todoItems: [], todoItems: storage.fetch(), //위에 만들어준 값을 넣어준다 }, getters: { getTotalNum(state) { //인자는 state return state.todoItems.length; }, getTrueNum(state) { //인자는 state const trueItem = state.todoItems.filter( (item) => item.completed === true ); return trueItem.length; }, }, mutations:{ addOneItem(state, value) { //console.log(value) const obj = { completed: false, value: value }; //const를 쓰면 재선언할 수 없어 디버깅할 때 충돌을 줄일 수 있음 //오브젝트로 만들어줬기 때문에 obj를 찍게 되면 object object가 찍힘, 따라서 문자열로 변환해 주는것 localStorage.setItem(value.item, JSON.stringify(obj)); //JavaScript 값이나 객체를 JSON 문자열로 변환 if(!state.todoItems.some(element => element.value.item == value.item)){ state.todoItems.unshift(obj); }else{ alert('이미 작성된 내용입니다.'); } }, removeOneItem(state, payload) { //console.log(payload); localStorage.removeItem(payload.todoItem.value.item); //객체일때 로컬스트리지에서 삭제하기 state.todoItems.splice(payload.index, 1); //현재 리스트에서 삭제하기 }, toggleOneItem(state, payload) { //todoItem.completed = !todoItem.completed; //이벤트로 넘어온값을 바꾸는 것을 안티패턴이라고 하며 어짜피 props로 내려준 값이 변경되므로 아래와같이 변경한것 state.todoItems[payload.index].completed = !state.todoItems[payload.index].completed; //localStorage 갱신하기 localStorage.removeItem(payload.todoItem.value.item); //localStorage는 업데이트 기능이 없으므로 삭제 후 localStorage.setItem(payload.todoItem.value.item, JSON.stringify(payload.todoItem)); //새로 추가해준다, 이때 completed 값이 바꼈으므로 바뀐값이 들어오게 된다. sortlist(state.todoItems); //리팩토링이안돼네...추후에 해결할것 ㅠㅠ }, clearAllItems(state) { localStorage.clear(); state.todoItems = []; }, }, });
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청드립니다!!
인프런 아이디 : seajin97@g.shingu.ac.kr인프런 이메일 : seajin97@g.shingu.ac.kr깃헙 아이디 : seajin97@g.shingu.ac.kr깃헙 Username : simsimhang
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
뒤죽박죽 올라가는 리스트 순서를 대비해 sort() API를 사용하라고 적어주셨는데 도저히 모르겠습니다..!
const storage = { fetch() { const arr = []; if(localStorage.length > 0){ for(let i = 0; i < localStorage.length; i++){ if(localStorage.key(i) !== 'loglevel:webpack-dev-server'){ arr.push(JSON.parse(localStorage.getItem(localStorage.key(i)))); } } } return arr; }, }; 답변 중 불러올 때 for 문을 돌리는데 순서 보장이 안된다고 하신 부분을 보고 위 쪽에 있는 for문을 말씀하신 건가 싶었고 그럼 이 부분에 있는 배열 arr에 sort()를 추가하는 건가? 싶었는데 제가 맞게 이해한 걸까요?sort라는 변수를 하나 추가한 뒤 arr.sort()를 넣은 후 return값에 arr대신 sort를 넣어보기도 했는데 잘못된 방 법인지 딱히 바뀌지 않더라구요.. 구글을 뒤져봐도 아직 못 찾아 좀 더 찾아보면서 질문도 함께 올려봅니다..
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
권한 재요청ㅡㅜ
초대장을 확인을 못해서 초대장이 소멸되었네요.ㅠㅠ 다시 부탁드립니다.인프런 아이디 : kik1611인프런 이메일 : kik1611@nate.com깃헙 아이디 : kik87827@gmail.com깃헙 Username : kik87827
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청
권한 요청 드립니다.인프런 아이디 : cldud970@gmail.com인프런 이메일 : cldud970@gmail.com깃헙 아이디 : cldud970@naver.com깃헙 Username : Returnmakdo
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청
깃헙 권한 요청 드립니다.인프런 아이디 : jiin724@gmail.com인프런 이메일 : jiin724@gmail.com깃헙 아이디 : jiin724@gmail.com깃헙 Username : amazingkj요청 드립니다~!
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
권한 재요청
깃헙 메일이 변경되어 권한 재요청 드립니다.인프런 아이디 : online_uiux@mediawill.com인프런 이메일 : online_uiux@mediawill.com깃헙 아이디 : online_uiux@mediawill.com깃헙 Username : online_uiux
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청드립니다.
인프런 아이디 : feeljinjoo@naver.com인프런 이메일 : feeljinjoo@naver.com깃헙 아이디 : isky247@hanmail.net깃헙 Username : pearlrabbit
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청
권한 요청 드립니다.인프런 아이디 : online_uiux@mediawill.com인프런 이메일 : online_uiux@mediawill.com깃헙 아이디 : kimyj@mediawill.com깃헙 Username : yejinkeem
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
github 권한 요청 드립니다.
인프런 아이디 : mi.jang@ahnlab.com인프런 이메일 : mi.jang@ahnlab.com깃헙 아이디 : rose01072815503@gmail.com깃헙 Username : rose01072815503
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청
인프런 아이디 : notenore@gmail.com인프런 이메일 : notenore@gmail.com깃헙 아이디 : notenore@gmail.com깃헙 Username : notenore
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청
인프런 아이디 : kimnamkyu@lgcns.com인프런 이메일 : kimnamkyu@lgcns.com깃헙 아이디 : formanship@gmail.com깃헙 Username : manstar1201
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
github 권한요청 드립니다.
인프런 아이디 : shwan16.oh@samsung.com인프런 이메일 : shwan16.oh@samsung.com깃헙 아이디 : oswswo123깃헙 Username : SeungHwan Oh
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
권한 요청 부탁드립니다.
인프런 아이디 : stomboy2@naver.com인프런 이메일 : stomboy2@naver.com깃헙 아이디 : tyo1012@naver.com깃헙 Username : Five-Sun
- 미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
i 태그 사용 시 click event 안먹는 이유
안녕하세요. 강의 들으면서 하나하나 따라했는데 i태그 사용하여 v-on:click 시, 클릭이벤트가 전혀 먹히지 않아 일단 span태그로 감싸 사용했습니다. 강사님은 i태그만 사용해도 이벤트가 적용 되는데 왜 안되는지 이유를 알 수 있을까요?제 코드는 아래에 있습니다. <template> <div> <ul> <li v-for="(todoItem, index) in todoItems" v-bind:key="todoItem.item" class="shadow" > <span v-on:click="toggleComplete(todoItem, index)"> <i class="checkBtn fas fa-check" v-bind:class="{ checkBtnCompleted: todoItem.completed }" ></i> </span> <span v-bind:class="{ textCompleted: todoItem.completed }"> {{ todoItem.item }} </span> <span class="removeBtn" v-on:click="removeTodo(todoItem, index)" > <i class="fa-regular fa-trash-can"></i> </span> </li> </ul> </div> </template> <script> export default { data: function () { return { todoItems: [], }; }, methods: { removeTodo: function (todoItem, index) { localStorage.removeItem(todoItem); this.todoItems.splice(index, 1); }, toggleComplete: function (todoItem, index) { todoItem.completed = !todoItem.completed; localStorage.removeItem(todoItem.item); localStorage.setItem(todoItem.item, JSON.stringify(todoItem)); }, }, created: function () { if (localStorage.length > 0) { for (let i = 0; i < localStorage.length; i++) { localStorage.getItem(localStorage.key(i)); this.todoItems.push( JSON.parse(localStorage.getItem(localStorage.key(i))) ); } } }, }; </script> <style scoped> ul { list-style-type: none; padding-left: 0px; 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 { line-height: 45px; color: #62acde; margin-right: 5px; } .checkBtnCompleted { color: #b3adad; } .textCompleted { text-decoration: line-through; color: #b3adad; } </style>