2016-11-05 6 views
0

Ich mache eine Update-Anfrage auf meiner React Native App zu meiner Firebase mit Redux im Hinterkopf.Firebase-Update-Methode produziert Versprechen Ablehnung

Hier ist mein redux Snippet

export function buyTicket(eventID) { 
    const { currentUser } = firebase.auth(); 
    return (dispatch) => { 
    firebase.database().ref(`/Users/${currentUser.uid}/joinedEvent`).update({ [eventID]: true }) 
     .then(() => dispatch({ type: BUY_TICKET_SUCCESS })) 
     .catch(() => dispatch({ type: BUY_TICKET_FAIL })); 
    }; 
}; 

Wenn die buyTicket Funktion aufgerufen wird, wird nur die dann() Methode erwartet werden sollte, aber dann beide() und catch() wurde genannt.

Gemäß den Firebase-Dokumenten erzeugt update() zwar ein Versprechen, ist aber optional.

Hier ist der Fehler Ich erhalte Error

Das ist mein Minderer

export default (state = INITIAL_STATE, action) => { 
    switch (action.type) { 
    case PULL_EVENT_DATA: 
     return action.payload; 
    case PULL_TRENDING_DATA: 
     return action.payload; 
    case BUY_TICKET_SUCCESS: 
     return { 
     message: 'Yay, see you there!' 
     } 
    case BUY_TICKET_FAIL: 
     return { 
     message: 'shit' 
     } 
    default: 
     return state; 
    } 
} 

Vielleicht ist das Konsolenprotokoll könnte einen Anhaltspunkt gibt?

+0

sind Sie sicher, dass die Fangberichte? 'Object.assign' ist die erste Warnzeile, hat sie vielleicht etwas mit Ihrem Reducer zu tun? – Jan

+0

Ich habe meinen Reducer überarbeitet, aber er sieht gut aus für mich ... @Jan –

Antwort

1

Als Jan auf den Teil hinwies, den ich vermisste, konnte ich den Fehler verschieben und korrigieren.

Der Fehler, den ich machte, ist Mutabilität. Ich habe das Konzept der Wandlungsfähigkeit beim Erstellen der App nicht berücksichtigt, daher der Fehler.

export default (state = INITIAL_STATE, action) => { 
    switch (action.type) { 
    case PULL_EVENT_DATA: 
     return action.payload; 
    case PULL_TRENDING_DATA: 
     return action.payload; 
    case BUY_TICKET_SUCCESS: 
     return { ...state, message: action.payload} 
    case BUY_TICKET_FAIL: 
     return { ...state, message: action.payload} 
    default: 
     return state; 
    } 
} 

Sie können mehr über Veränderlichkeit finden here

Verwandte Themen