Vue 응용 프로그램에서 근본이 되는 것은 data 객체다. Vue 인스턴스는 단순히 그것에 대한 액세스를 프록시 한다. 따라서 여러 인스턴스에서 공유해야하는 상태가 있으면 id로 간단히 공유할 수 있다.
const sourceOfTruth = {}
const vmA = new Vue({
data: sourceOfTruth
})
const vmB = new Vue({
data: sourceOfTruth
})
이제 sourceOfTruth가 변형될때마다 vmA와 vmB가 자동으로 뷰를 갱신한다. 이 인스턴스들 각각의 하위 컴포넌트들은 this.$root.$data를 통해 접근할 수 있으며 언제든지 앱의 일부에서 변경할 수 있다.
이 문제를 해결하기 위해 간단한 store 패턴을 사용할 수 있다.
var store = {
debug: true,
state: {
message: 'Hello!'
},
setMessageAction(newValue) {
if (this.debug) console.log('setMessageAction triggered with ', newValue)
this.state.message = newValue
},
clearMessageAction() {
if (this.debug) console.log('clearMessageAction triggered')
this.state.message = ''
}
}
store의 상태를 변경시키는 모든 조치는 store 자체에 들어 있다. 이러한 유형의 중앙 집중식 상태관리는 어떤 유형의 에러가 발생할 수 있는지 등의 디버깅이 쉬워진다.
또한 각 인스턴스/컴포넌트는 여전히 자체적으로 비공개 상태를 가지고 관리할 수 있다.
var vmA = new Vue({
data: {
privateState: {},
sharedState: store.state
}
})
var vmB = new Vue({
data: {
privateState: {},
sharedState: store.state
}
})
'프로그래밍(TA, AA) > 자바스크립트' 카테고리의 다른 글
| [Vue.js] Vuex를 이용한 상태 관리 (0) | 2019.01.20 |
|---|---|
| [Vue.js] 공식 가이드 문서 요약 (5) - 반응형 (0) | 2018.12.31 |
| [Vue.js] 공식 가이드 문서 요약 (3) - 플러그인 (0) | 2018.12.25 |
| [Vue.js] 공식 가이드 문서 요약 (2) - 컴포넌트 (0) | 2018.12.22 |
| [Vue.js] 공식 가이드 문서 요약 (1) (0) | 2018.12.18 |