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);
});
}
非常感谢。我一会儿就试试这个。