2016-10-20 2 views
0

Im Folgenden finden Sie ES5 SyntaxWarum ist mein Zustand nicht definiert?

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; 
    } 
} 

Unten es6 ist Syntax

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; 
} 

Warum meine Linie 7 wird "Zustand ist nicht definiert" aus es6?

customMsgReducer.js:36Uncaught ReferenceError: state is not defined(…) 
+1

'mailContent: mailContent (state.mailContent, Aktion)' 'state' sollte hier nicht definiert sein – Maxx

+0

Können Sie bitte die vollständige Fehlermeldung, die Sie erhalten. –

+1

@aBloomer Ihr 'state' ist zum Zeitpunkt der Definition von' initialStae' noch undefiniert. – Maxx

Antwort

0

In ES5 definieren Sie state = state || {}; und dann state.checkStatus erreichbar. Daher funktioniert es.

function customMsg(state, action) { 
    state = state || {}; 
    return $.extend({}, state, { 
     isFetching: false, 
     didInvalidate: false, 
     checkStatus: checkStatus(state.checkStatus, action) 
    }); 
} 

Aber in ES6, greifen Sie state.checkStatus ohne die state definiert, die undefined hier. Daher ist der Zugriff auf checkStatus von undefined Wurffehler.

Verwandte Themen