#javascript #ecmascript-6
#javascript #ecmascript-6
Вопрос:
Ниже приведен синтаксис es5
function customMsg(state, action) {
state = state || {};
return $.extend({}, state, {
isFetching: false,
didInvalidate: false,
checkStatus: checkStatus(state.checkStatus, action)
});
}
function checkStatus(state, action) {
state = state || {
isFetching: false,
didInvalidate: false,
type: "room"
};
return state;
}
}
Ниже приведен синтаксис es6
const initialStae = {
isFetching: false,
didInvalidate: false,
checkStatus: checkStatus(state.checkStatus, action)
}
function customMsg(state = initialStae, action) {
return state;
}
function checkStatus(state, action) {
state = state || {
isFetching: false,
didInvalidate: false,
type: "room"
};
return state;
}
Почему в моей строке 7 будет отображаться «состояние не определено» из es6?
customMsgReducer.js:36Uncaught ReferenceError: state is not defined(…)
Комментарии:
1.
mailContent: mailContent(state.mailContent, action)
state
здесь должно быть не определено2. Не могли бы вы, пожалуйста, добавить полное сообщение об ошибке, которое вы получаете.
3. @aBloomer ваше
state
все еще не определено на момент определенияinitialStae
4. @aBloomer вы можете получить доступ к состоянию redux только внутри функции reducer / actions и mapStateToProps
Ответ №1:
В ES5 вы определяете, state = state || {};
а затем получаете доступ state.checkStatus
. Отсюда и его работа.
function customMsg(state, action) {
state = state || {};
return $.extend({}, state, {
isFetching: false,
didInvalidate: false,
checkStatus: checkStatus(state.checkStatus, action)
});
}
Но в ES6 вы получаете доступ state.checkStatus
без определения того, state
что undefined
находится здесь. Следовательно, доступ к checkStatus
of undefined
выдает ошибку.