반응형
Vue + Vuex + Phaser 반응형 통화에서 '이' 스코프가 손실됨
저는 Vue + Vuex를 사용하여 게임을 만들려고 했지만 프로젝트 중간에 게임의 가장 상호작용적인 부분이 Phaser와 만들어져야 한다는 것을 깨닫고 그 부분에 Phaser를 사용하고 UI에는 Vue + Vuex를 유지하기로 결정했습니다.
제가 Vuex in Phaser에서 첫 번째 데이터를 얻으려고 하기 전까지는 모든 것이 예상보다 잘 진행되고 있었습니다. 문제는 현재 객체의 범위를 잃는다는 것입니다.
사용 중store.watch();
변경 내용을 가져오지만 다른 기능을 호출하려고 하면 오류가 발생합니다.
import store from '../vuex/store';
import Creature from './Creature';
const creatures = [];
export default {
create() {
store.watch(this._newCreatureGetter, this._newCreatureRX);
for (const creature of this._creaturesGetter()) {
this._addCreature(creature);
}
},
_addCreature(creature) {
creatures.push(new Creature(this.game, creature));
},
_newCreatureGetter() {
return store.state.newCreature;
},
_newCreatureRX(newCreature) {
console.log(this);
this._addCreature(newCreature);
},
};
페이저의 이 코드에서._newCreatureRX
VueX에서 호출됩니다. 호출하려고 할 때_addCreature
라고 말하는 오류가 발생합니다._addCreature
정의되지 않았습니다.그console.log(this)
Vue 개체를 보여 줍니다.
어떻게 하면 이것이 제대로 작동합니까?프로젝트를 다르게 구성해야 합니까?
그store.watch
메소드는 원래 컨텍스트에서 콜백 함수를 실행하지 않을 것입니다. 그것이 이유입니다.this
틀렸습니다.
함수를 올바른 컨텍스트에 명시적으로 바인딩할 수 있습니다.
store.watch(this._newCreatureGetter, this._newCreatureRX.bind(this))
언급URL : https://stackoverflow.com/questions/41798549/losing-this-scope-in-a-vue-vuex-phaser-reactive-call
반응형
'programing' 카테고리의 다른 글
Shiny에서 '최대 업로드 크기 초과' 제한을 변경하고 사용자 파일 입력을 저장하는 방법은 무엇입니까? (0) | 2023.06.08 |
---|---|
ReDim Preserve는 무엇을 합니까? (0) | 2023.06.08 |
sklearn에서 'fit_sk'와 'fit_sk'의 차이점은 무엇입니까? (0) | 2023.06.08 |
Oracle: null 및 non-null 행을 카운트하는 방법 (0) | 2023.06.08 |
Xcode 8 - IB Designables - 자동 레이아웃 상태 렌더링 및 업데이트 실패, 에이전트 충돌 (0) | 2023.06.08 |