Vuex는 데이터를 중앙에서 모두 관리

EventBus는 메소드들을 중아에서 모두 관리 (root 컴포넌트에 모든 메소드가 다들어가서 너무 커짐)

data() {
            return {
                tableData: [
                    ['', '', ''],
                    ['', '', ''],
                    ['', '', ''],
                ],
                turn: 'O',
            };

this.turn  = 'X';이렇게 하면 turn에 관한 데이터는 알아서 잘변경 되지만

tableData[0][1] = 'O'; 와 같이 인덱스로 데이터에 접근해서 변경하는 경우는 데이터 변경부분이 적용되지않는다.

배열에 있는 매소드를 사용해 데이터를 바꾸는건 또 적용된다. ex) tableData.push(['', '', '']);

 

인덱스를 사용해서 배열을 변경하고 화면에도 적용하려면

 

import Vue from 'vue';

Vue.set(this.tableData[1], 0, 'X'); //tableData[1][0] = 'X';

or
//Vue임포트하기 귀찮으면
this.$set(this.$root.$data.tableData[this.rowIndex], this.cellIndex,this.$root.$data.turn);

이렇게 Vue.set을 사용하여 변경해주면 적용된다.

 

#나중에 컴포넌트가 많아지다보면 this.$root나 this.$parent.$parent.$parent이런식으로 너무복잡해져서 답이없다 이럴때쓰는게 vuex(대충 데이터 중앙통제실)을 써서 모든데이터를  한곳에서 관리하는 라이브러리를 사용한다고 한다.

'[Web-FrontEnd] > [Vue]' 카테고리의 다른 글

[Vue] Vuex, EventBus차이  (0) 2020.05.11

+ Recent posts