【问题标题】:POST request in react hook form not fetching the user input以反应钩子形式发布请求未获取用户输入
【发布时间】:2021-12-16 14:46:21
【问题描述】:

我正在处理地址簿,我已经从这个 API url 获取了所有数据:

https://jsonplaceholder.typicode.com/users

API 不能真正被修改,但根据文档中的这条消息,它的行为应该“像 if”:“资源不会在服务器上真正更新,但它会被伪造。”

我已经设置了 react hook 表单,但是当我提交表单时,这就是我在开发工具选项卡网络中得到的结果?此时不应该显示用户输入而不是所有字段的空字符串? id 是唯一被更新的东西。 我的提交功能或实际提取有什么问题吗?我可以在这个组件中进行 POST 获取,我也有我的表单,还是应该在我有 GET 请求的同一个组件中?

这是处理 POST 请求的好方法吗?

const NewUserForm = () => {
     
  const { register, handleSubmit, formState: { errors } } = useForm();
     
  const onSubmit = () => {

    fetch(URL, {
      method: 'POST',
      body: JSON.stringify({
        id:'',
        name: '',
        email: '',
        address1:'',
        address2:'',
        city:'',
        phone:''    
      }),
        headers: {
          'Content-type': 'application/json; charset=UTF-8'
        },
    })
      .then((response) => response.json())
      .then((json) => console.log(json)); 
  }
  
    return (
      <>
        <Header>New user</Header>
          <FormContainer>
            <Form onSubmit={handleSubmit(onSubmit)}>      
              <input type="text" placeholder="name"  {...register("name", { required: true })} />
              {errors.name && <span>This field is required</span>}

              <input type="text" placeholder="email" {...register("email", { required: true })} />
              {errors.email && <span>This field is required</span>}

              <input type="text" placeholder="address1"{...register("address1", { required: true })} />
              {errors.address1 && <span>This field is required</span>}

              <input type="text" placeholder="address2"{...register("address2", { required: true })} />
              {errors.address2 && <span>This field is required</span>}

              <input type="text" placeholder="city"{...register("city", { required: true })} />
              {errors.city && <span>This field is required</span>}
              
              <input type="text" placeholder="phone"{...register("phone", { required: true })} />
              {errors.phone && <span>This field is required</span>}
              
              <input type="submit" />
            </Form>
          </FormContainer>
      </>  
    );
}

【问题讨论】:

    标签: reactjs request fetch fetch-api


    【解决方案1】:

    好的,在检查了 react-hook-form 文档之后,这是一个可能的解决方案:

    在文档中,它说您的 onSubmit 将有一个数据参数:

      const onSubmit = (data) => alert(JSON.stringify(data));
    

    这意味着您也可以在 onSubmit 中使用它。 尝试更改您的 onSubmit 以使用 data 参数:

      const onSubmit = (data) => {
        fetch(URL, {
          method: 'POST',
          body: JSON.stringify(data),
    

    并恢复我之前建议的关于handleSubmit 的更改。这是正确的:

        <Form onSubmit={handleSubmit(onSubmit)}>      
    

    【讨论】:

    • 我对这个解决方案一点反应都没有。 ://
    • 您能发布您的handleSubmit 和/或register 函数的内容吗?
    • 我在哪里可以找到它?对不起
    • 啊,我明白了,您正在使用 react-hook-form useForm 自定义挂钩。供更多评论者参考:react-hook-form.com/api/useform
    • 不确定我是否收到您的问题,但值不会像我在帖子中提到的那样改变。当我输入输入并单击“提交”时,它显示空字符串。我应该发送一些截图吗?
    猜你喜欢
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2023-01-04
    • 2017-10-11
    • 1970-01-01
    相关资源
    最近更新 更多