У меня есть два флажка, которые работали ранее, но теперь выдают ошибку. Эти флажки просто возвращают значение true или false в форме, которая передается в бэкэнд Firestore. В последнее время они работали нормально, пока не были внесены другие изменения.
Ошибка, о которой идет речь, - TypeError: Невозможно создать свойство 'cash' для логического значения 'false'. Это срабатывает при каждом нажатии флажка. Я использую действие changeStoreData () для обновления FireStore, это действие вызывается во всем приложении, чтобы обновить информацию о пользователях
Это мои настройки состояния
constructor(props) {
super(props);
this.state = {
currency: "USD",
tax_rate: "8.00",
prices_include_tax: false,
payment_types: {
cash: false,
credit: false
}
};
}
Эти тезисырассматриваемые кнопки
handleCash = () => {
this.setState(state => {
var newData = state.payment_types;
newData.cash = !state.payment_types.cash;
return {
payment_types: newData
};
});
};
handleCredit = () => {
this.setState(state => {
var newData = state.payment_types;
newData.credit = !state.payment_types.credit;
return {
payment_types: newData
};
});
};
Это функция onSubmit, вызывающая функцию changeStoreData ()
handlePaymentInfoSub = e => {
e.preventDefault();
this.setState(state => {
changeStoreData(state);
// I know this needs to be more explicit
// Other places in my app this is called changeStoreData({DBvalue:
// stateValue}) but I am not sure how to do this with nested values
return state;
});
};
и, наконец, сама функция changeStore из файла действий
export function changeStoreData(data) {
let currentState = store.getState();
let id = currentState.currentStore.id;
console.log(data);
firestoreDb
.collection("users")
.doc(currentState.uid)
.collection("stores")
.doc(id)
.update(data)
.then(
store.dispatch({
type: UPDATE_STORE_DATA,
data: data
})
)
.catch(err => {
console.log(err);
});
}
Ошибка:
TypeError: Cannot create property 'cash' on boolean 'false'