我正在使用formik,在我的注册表中,我有一个文本字段用户名,我想在提交表单之前检查用户名是否可用,所以我做了一个函数onhandle更改事件为:
<FormControl >
<TextField
name="userName"
onBlur={handleBlur}
value={values.userName}
onChange={(e)=>{handleChange(e);checkAvailabilty(e)}}
error={touched.userName && Boolean(errors.userName) }
helperText={touched.userName && errors.userName }
/>
<FormHelperText error>
{userError ? userError : null}
</FormHelperText>
</FormControl>
其作用是:
const checkAvailabilty = async(e) =>{
try{
let response = await axios.get(`${state.baseUrl}users/is_available/${e.target.value}`)
if(response.status.code === 200)
{setUserError(false)}
}
catch(error){
if(error.response.status=== 409)
{setUserError("available")}
}
}
因此只要存在任何用户,它就会将用户错误设置为可用
但问题是setuserError没有在http代码200上相应地设置,一旦设置为可用,它将不会设置为false,它将保持设置可用。
1条答案
按热度按时间hiz5n14c1#
不幸的是,我还没有足够的声誉来发表评论,但我想问几件事:
state.baseUrl
是否以/
结尾?404
Not found代替409
进行响应不是更好吗?我也相信您只需要检查
response.status
而不是response.status.code
来检查响应代码。