如何使用 useForm 钩子获取输入值,然后使用 json-server 执行 POST?

Posted

技术标签:

【中文标题】如何使用 useForm 钩子获取输入值,然后使用 json-server 执行 POST?【英文标题】:How can i get an input value with useForm hook and then perform a POST with json-server? 【发布时间】:2021-08-12 10:06:33 【问题描述】:

我是 ReactJs 的新手,正在尝试使用 json-server 在假 API 中创建 CRUD。如何正确使用 useForm Hook 并执行用户名和电子邮件的 POST?

import React from "react";
import  useForm  from "react-hook-form";

import Form from "../Form";
import Field from "../Field";
import Button from "../Button";

const FormNew = () => 
  const  register, handleSubmit  = useForm();

  const newUser = (user) => 
    console.log(user);
    const url = "http://localhost:3002/posts";
    fetch(url, 
      method: "POST",
      headers: 
        "Content-type": "application/json",
      ,
      body: JSON.stringify(
        name: "example-name",
        email: "example@mail.com",
      ),
    )
      .then((resp) => resp.json())
      .then((user) => 
        console.log("User created success", user);
      );
  ;

  return (
    <Form onSubmit=handleSubmit(newUser)>
      <Field.Text label="Name" name="name" type="text" ...register />
      <Field.Text label="Email" name="email" type="email" ...register />
      <Button>Submit</Button>
    </Form>
  );
;
export default FormNew;

【问题讨论】:

【参考方案1】:

您必须在 组件上注册您的价值键

<Form onSubmit=handleSubmit(newUser)>
  <Field.Text label="Name" name="name" type="text" ...register('name') />
  <Field.Text label="Email" name="email" type="email" ...register('email') />
  <Button>Submit</Button>
</Form>

【讨论】:

以上是关于如何使用 useForm 钩子获取输入值,然后使用 json-server 执行 POST?的主要内容,如果未能解决你的问题,请参考以下文章

如何从钩子内的 Formik 中获取值?

检查另一个输入时如何根据一个输入更改值?反应钩子

如何将输入值从子表单组件传递到其父组件的状态以使用反应钩子提交?

使用 React 的 useState 钩子时输入可空状态的正确方法

React Native:如何从循环中获取值到钩子 useState

如何在 React 函数组件中不使用 useEffect 钩子获取数据?