
React-Flux: AppDispatcher.register 오류
Flux-React에서 기본 앱을 설정하려고 하면 AppDispatcher.register에서 오류가 발생할 수 있습니다. 이 함수는 액션을 디스패처를 통해 등록된 스토어로 보내고, 스토어가 페이로드를 처리하는 역할을 합니다. 그러나 Uncaught TypeError: Cannot set property 'ID_1' of undefined라는 오류가 발생할 수 있습니다. 이 블로그 포스트에서는 이 오류의 원인을 살펴보고 해결책을 제시하겠습니다.
문제점
Flux-React 앱의 기본 구조를 설정한 후에는 AppDispatcher.register 코드 라인에 도달할 때까지 모든 것이 정상작동 하는 것 같지만, 여기에서 Uncaught TypeError: Cannot set property 'ID_1' of undefined 오류가 발생합니다. 다음 코드 스니펫을 살펴보겠습니다:
var AppDispatcher = require('../dispatcher/AppDispatcher');
var EventEmitter = require('events').EventEmitter;
var AppConstants = require('../constants/AppConstants');
var assign = require('object-assign');
var CHANGE_EVENT = 'change';
var AppStore = assign({}, EventEmitter.prototype, {
emitChange: function() {
this.emit(CHANGE_EVENT);
}
});
AppDispatcher.register(function(payload){
console.log(payload);
return true;
});
module.exports = AppStore;
이 오류는 Flux의 최신 버전과의 호환성 문제로 발생합니다. 사용하고 있는 코드는 이전 버전에서 가져온 것으로 보이며, AppDispatcher를 정의하는 올바른 방법이 변경되었습니다. 해결책을 살펴봅시다!
해결책
이 문제를 해결하려면 새로운 규칙을 사용하여 AppDispatcher를 재정의해야 합니다. AppDispatcher.js의 코드를 다음과 같이 수정합니다:
var Dispatcher = require('flux').Dispatcher;
var assign = require('object-assign');
var AppDispatcher = assign(new Dispatcher(), {
handleViewAction: function(action) {
this.dispatch({
source: 'VIEW_ACTION',
action: action
});
}
});
module.exports = AppDispatcher;
Dispatcher 클래스의 새 인스턴스를 만들고 이를 AppDispatcher에 할당하여 코드의 호환성을 최신 버전의 Flux와 보장합니다.
코드의 작동 예제를 확인하려면 이 저장소를 확인하십시오. 이곳에서 오류가 수정된 간단하고 최신화된 Flux-React 앱 구현을 찾을 수 있습니다.
결론
이 블로그 포스트에서는 Flux-React에서 AppDispatcher.register를 사용할 때 발생하는 오류에 대해 알아보았습니다. AppDispatcher가 정의되는 방식을 업데이트하여 문제를 해결했습니다. Flux의 최신 버전과의 호환성을 보장하기 위해 제시된 해결책을 따르세요. 즐거운 코딩 되세요!
참고 자료 :
https://stackoverflow.com/questions/28822881/react-flux-error-with-appdispatcher-register
같은 카테고리의 다른 글 보기 :