Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React类组件中抛出错误且值为true或false的复选框?_Javascript_Reactjs_Checkbox_Boolean_State - Fatal编程技术网

Javascript 在React类组件中抛出错误且值为true或false的复选框?

Javascript 在React类组件中抛出错误且值为true或false的复选框?,javascript,reactjs,checkbox,boolean,state,Javascript,Reactjs,Checkbox,Boolean,State,我有两个复选框,它们以前可以工作,但现在抛出了一个错误。这些复选框只返回表单中的true或false,并提交到Firestore后端。在做出其他改变之前,这些系统最近运行良好 所讨论的错误是 TypeError:无法在布尔值“false”上创建属性“cash” 只要单击复选框,就会触发此操作。我正在使用 changeStoreData()操作更新FireStore,此操作在我的整个应用程序中调用,以更新用户信息 这是我的状态设置 constructor(props) { super(pr

我有两个复选框,它们以前可以工作,但现在抛出了一个错误。这些复选框只返回表单中的true或false,并提交到Firestore后端。在做出其他改变之前,这些系统最近运行良好

所讨论的错误是 TypeError:无法在布尔值“false”上创建属性“cash” 只要单击复选框,就会触发此操作。我正在使用 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
      };
    });
  };
这是调用changeStoreData()函数的onSubmit函数

最后,这里是actions文件中的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'

这可能与您的问题无关,但此行
var newData=state.payment\u types
没有复制状态
newData
只是指向状态的同一引用。付款类型。因此不需要它?在您的情况下,一个简单的浅拷贝将解决状态变异的问题
const newDate={…state.payment_types}
这是有效的,但是您建议如何更改changeStoreData()调用以正确保存到firestore
TypeError: Cannot create property 'cash' on boolean 'false'