【发布时间】:2020-02-12 16:05:02
【问题描述】:
我认为这可能是错误或配置错误。
我收到此错误:
networkError: ServerError: Response not successful: Received status code 500
第一次提交表单我会得到想要的结果,但是如果我再次点击提交按钮,我会收到上面的 networkError 消息。
const client = useApolloClient();
const [val, setValu] = useState({
email: 'example@example.com',
password: 'password',
texterror: {
status: false,
text: ''
},
})
//the submit function below:
const handleLogin = async (e) => {
e.preventDefault();
await client.query({
query: Handle_Login,
variables: {
email: val.email,
password: val.password
}
}).then((e) => {
console.log(e)
}).catch((e) => {
setValu({
texterror: {
status: true,
text: 'it be broke yo'
}
})
})
}
但是,如果我在 catch 中删除 setValu({texterror: {status: true, text: 'it be broke yo'}}),500 错误就会消失。我可以向提交按钮发送垃圾邮件,但不会收到 500 错误。
目前我不会在内部设置 setState 以避免此问题,但我想知道是否有解决此问题的方法。
任何帮助将不胜感激。提前谢谢!
【问题讨论】:
-
当您说错误消失时,您的意思是它根本没有错误,即使在您的网络选项卡中也是如此?或者你的意思是它根本没有显示在你的状态?
-
@TeeJ 抱歉,我应该更清楚一点。当我删除 catch 中的 setValu 并用普通的 console.log() 替换它时,没有 500 错误。如果我将 setValu 保留在 catch 中,则第一次提交成功,但如果再次按提交,则会收到 500 错误。
-
那是因为你没有用户名和密码。 console.log val 对两个请求进行确认,但这应该会有所帮助。
-
好的.......你是对的。我输入了 setValu({ email: 'example@example.com', password: 'password', texterror: { status: true, text: 'text'} }) 并且有效。太感谢了!你应该把它作为一个答案,我会接受它。感谢您帮助我解决困扰我数小时的问题!
-
将其添加为任何未来读者的答案。很高兴我能提供帮助。
标签: reactjs graphql react-hooks apollo-client react-functional-component