2017-12-12 1 views
0

Ich habe eine einfache Switch-Komponente, die hin und her zwischen True und False hin und her schaltet. Ich habe es in meinen Aktionen verkabelt, um diesen Booleschen Wert in einer Tabelle in Firebase festzulegen. Firebase sagt, dass "das erste Argument in der Eigenschaft nicht definiert ist". Wenn ich jedoch diese spezifische Stütze protokolliere, kann ich sehen, dass sie sich als wahr und falsch meldet, wenn ich sie umschalte. Die Stütze ist "verkauft". Alle anderen Requisiten sind gut eingestellt.Firebase wird von Reducer undefiniert, aber Status von Reducer Logs als boolean

Hier ist die Aktion Schöpfer, die Firebase zu setzen versucht:

export const entrySave = ({ make, model, year, uid, image, sold }) => { 
    const { currentUser } = firebase.auth(); 

    return (dispatch) => { 
    firebase.database().ref(`/users/${currentUser.uid}/entries/${uid}`) 
     .set({ make, model, year, image, sold }) 
     .then(() => { 
      dispatch({ type: ENTRY_SAVE_SUCCESS }); 
     Actions.main({ type: 'reset' }); 
    }); 
}; 
}; 

Hier ist die Aktion Schöpfer, der die Änderung der this.props.sold aktualisiert:

export const entryUpdate = ({ prop, value }) => { 
return { 
type: ENTRY_UPDATE, 
payload: { prop, value } 

    }; 
    }; 

Hier ist der Schalter:

console.log(this.props.sold); 
//both logging 'this.props.sold' and the redux debugger show that 
//this.props.sold is toggling between true and false 
return (
    <View> 
    <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', height: 66 }}> 
     <View> 
     <Text style={styles.switchLabelStyle}>Mark As Sold</Text> 
     </View> 
     <View style={{ paddingRight: 20 }}> 
     <Switch 
      tintColor='#a6a7a8' 
      onValueChange={value => this.props.entryUpdate({ prop: 
      'sold', value })} 
      value={this.props.sold} 
     /> 
     </View> 
    </View> 

Und weiter unten:

const mapStateToProps = (state) => { 
    const { make, model, year, sold } = state.entryForm; 

    return { make, model, year, sold }; 
}; 

export default connect(mapStateToProps, { entryUpdate })(EmployeeForm); 

Und hier ist der Reduzierer:

const INITIAL_STATE = { 
    make: '', 
    model: '', 
    year: '', 
    image: '', 
    sold: false, 
    uid: '', 
    loading: false; 
}; 

export default (state = INITIAL_STATE, action) => { 
    switch (action.type) { 
    case ENTRY_UPDATE: 
     return { ...state, [action.payload.prop]: action.payload.value }; 
    case ENTRY_CREATE: 
     return INITIAL_STATE; 
    case ENTRY_SAVE_SUCCESS: 
     return INITIAL_STATE; 
    case ENTRY_CLEAR: 
     return INITIAL_STATE; 

Jeder sehen, was mir fehlt? Danke im Voraus!

Antwort

0

Dumme mir ... Ich habe vergessen, in der Mutter Komponente mapStateToProps Funktion ‚verkauft‘ als Stütze zu schließen.

const mapStateToProps = (state) => { 
    const { make, model, year, image, sold } = state.entryForm; 

    return { make, model, year, image, sold }; 
}; 
Verwandte Themen