2017-07-25 3 views
0

Ich habe einen einfachen Zustand Record:unveränderlich GETIN null zurück, aber nicht notSetValue

interface StateParams { 
    priceObj: PriceDTO; 
} 

const defaultState = { 
    priceObj: undefined, 
} 

class State extends Record(defaultState) implements StateParams { 
    priceObj: PriceDTO; 
} 

standardmäßig es nicht definierten Wert hat.

Was auch immer, als Folge des offerRequest kommt auf priceObj gespeichert und nicht transformierte unveränderliche

(state: State, priceObj: PriceDTO) => state.set('priceObj', priceObj), 

Ich habe auch einfach Selektor:

export const getQuoteId = (state: State): string | undefined => 
    state.getIn(['offerData', 'priceObj'], {}).offerID; 

Leider einen Fehler wirft:

Uncaught TypeError: Cannot read property 'offerID' of null

Gibt es einen bestimmten Grund, warum getInnotSetValue Wert in diesem Fall nicht zurückgibt?

Antwort

0

Der Status enthält den Schlüssel priceObj, den Sie über den Set-Vorgang in Ihrem Reducer hinzugefügt haben. notSetValue wird nur zurückgegeben, wenn die Karte den Schlüssel nicht enthält. Ein expliziter null ist ein gültiger Wert (wie auch undefined), weshalb {} nicht zurückgegeben wird.

Sie sollten entweder überprüfen priceObj != null vor in Zustand zu versetzen oder Ihre Wähler etwas machen wie:

export const getQuoteId = (state: State): string | undefined => 
    (state.getIn(['offerData', 'priceObj']) || {}).offerID; 
+0

Dank, es ist zu klären alle – Kania

Verwandte Themen