Javascript 为什么我的表单提交在部署中会中断(React&x2B;Firestore)?

Javascript 为什么我的表单提交在部署中会中断(React&x2B;Firestore)?,javascript,reactjs,firebase,google-cloud-firestore,Javascript,Reactjs,Firebase,Google Cloud Firestore,这在开发中可以很好地工作,但是当我部署许多函数时,这些函数就会中断。例如,我有一个向数据库添加数据的表单,但当我提交它时,它只是刷新页面,但数据从未进入数据库 onSubmit = () => { firebase.auth().onAuthStateChanged((user) => { const { phoneNumber, points } = this.state; let pointsToAdd = Number(points);

这在开发中可以很好地工作,但是当我部署许多函数时,这些函数就会中断。例如,我有一个向数据库添加数据的表单,但当我提交它时,它只是刷新页面,但数据从未进入数据库

onSubmit = () => {
    firebase.auth().onAuthStateChanged((user) => {
        const { phoneNumber, points } = this.state;
        let pointsToAdd = Number(points);
        if(user) {
            const docRef = database.collection('users').doc(user.uid).collection('customers').doc(phoneNumber);
            docRef.set({
                points: pointsToAdd
            })
            .then(() => {
                console.log('success');
            })
            .catch((error) => {
                console.log(error);
            });
        } else {
            window.location.href = '/';
        }
    });
}

如果正在刷新,则用户变量为null。因此,您不能在部署的版本上登录。只需在调用firebase signin函数之前先添加该函数


我猜您没有登录到非开发环境,当找不到用户时,当前的实现将直接重定向

作为对当前提交处理程序的反馈:我认为您希望在装载组件时而不是在调用提交处理程序时收听
authStateChanged
。相应地更新状态,并在获取正确文档时使用状态中的用户

例如:

componentDidMount () {
  this.unsubscribe = firebase.auth().onAuthStateChanged((user) => {
    if (user) this.setState({ user })
    else window.location.href = '/'
  })
}

componentWillUnmount () {
  this.unsubscribe() // don't forget to unsubscribe when unmounting!
}

onSubmit = () => {
  const { phoneNumber, points, user } = this.state;
  let pointsToAdd = Number(points);

  database.collection('users').doc(user.uid).collection('customers').doc(phoneNumber)
    .set({
      points: pointsToAdd
    })
    .then(() => {
      console.log('success');
    })
    .catch((error) => {
      console.log(error);
    });
}

非常感谢。我一会儿就试试这个。