Флажок с ошибкой выдачи значения true или false в React Class Component? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть два флажка, которые работали ранее, но теперь выдают ошибку. Эти флажки просто возвращают значение 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'
...