페이지 | 줄 | 원문 | 수정 |
---|---|---|---|
101페이지 | 예제 05-02의 18행 | with:'100px' | width:'100px' |
114페이지 | 예제 05-11의 20행 | this.todolist.push(...) | this.todolist.push({ id: new Date().getTime(), todo: this.todo.trim(), done: false }); |
205페이지 | 9번째 줄 | npm install -g @vue /cli (windows) | npm install -g @vue/cli (windows) |
282페이지 | 11번,13번 줄 | yarn add vuejs-paginate [email protected] | yarn add [email protected] [email protected] Readme.MD의 버전 업그레이드 사항 1번 참조 |
317페이지 | 예제 11-02 | 전체 | 아래쪽의 첨부1의 코드로 변경합니다. |
418페이지 | 아랫부분 코드 | 첨부2 참조 | 첨부2 참조 |
import Vue from 'vue';
import Vuex from 'vuex';
import Constant from '../Constant';
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
todolist : [
{ id:1, todo : "영화보기", done:false },
{ id:2, todo : "주말 산책", done:true },
{ id:3, todo : "ES6 학습", done:false },
{ id:4, todo : "잠실 야구장", done:false },
]
},
mutations: {
[Constant.ADD_TODO] : (state, payload) => {
if (payload.todo !== "") {
state.todolist.push(
{ id:new Date().getTime(), todo: payload.todo, done:false });
}
},
[Constant.DONE_TOGGLE] : (state, payload) => {
var index = state.todolist.findIndex((item)=>item.id === payload.id);
state.todolist[index].done = !state.todolist[index].done;
},
[Constant.DELETE_TODO] : (state, payload) => {
var index = state.todolist.findIndex((item)=>item.id === payload.id);
state.todolist.splice(index,1);
}
}
})
export default store;
이 예제에서는 잘 작동하지만 다른 파라미터가 사용될 경우 오작동할 가능성이 있어서 정정합니다. 다른 파라미터가 사용될 경우 next()가 호출되지 않을 수 있기 때문에 if 문 밖에서 호출되는 것이 바람직합니다. gring2 님이 발견해주셨습니다. 감사합니다.
beforeRouteUpdate(to,from,next) {
if (to.query.page && to.query.page != this.contactlist.pageno) {
var page = to.query.page;
this.$store.dispatch(Constant.FETCH_CONTACTS, { pageno:page });
this.$refs.pagebuttons.selected = page-1;
next()
}
},
beforeRouteUpdate(to,from,next) {
if (to.query.page && to.query.page != this.contactlist.pageno) {
var page = to.query.page;
this.$store.dispatch(Constant.FETCH_CONTACTS, { pageno:page });
this.$refs.pagebuttons.selected = page-1;
}
next()
},