在reactjs中提交表单之前检查用户是否可用

enxuqcxy  于 2022-12-26  发布在  React
关注(0)|答案(1)|浏览(119)

我正在使用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,它将保持设置可用。

hiz5n14c

hiz5n14c1#

不幸的是,我还没有足够的声誉来发表评论,但我想问几件事:

  • 您的state.baseUrl是否以/结尾?
  • 404 Not found代替409进行响应不是更好吗?

我也相信您只需要检查response.status而不是response.status.code来检查响应代码。

相关问题