React useForm 钩子

ReactReactBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何在 React 中使用 useForm 钩子从表单字段创建有状态值。这将使我们能够轻松管理表单输入的状态并根据需要进行更新。完成本实验后,你将更好地理解如何使用 useForm 钩子在 React 中创建和管理表单。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL react(("React")) -.-> react/FundamentalsGroup(["Fundamentals"]) react(("React")) -.-> react/AdvancedConceptsGroup(["Advanced Concepts"]) react(("React")) -.-> react/StateManagementGroup(["State Management"]) react/FundamentalsGroup -.-> react/jsx("JSX") react/FundamentalsGroup -.-> react/event_handling("Handling Events") react/AdvancedConceptsGroup -.-> react/hooks("React Hooks") react/StateManagementGroup -.-> react/use_state_reducer("Using useState and useReducer") subgraph Lab Skills react/jsx -.-> lab-38385{{"React useForm 钩子"}} react/event_handling -.-> lab-38385{{"React useForm 钩子"}} react/hooks -.-> lab-38385{{"React useForm 钩子"}} react/use_state_reducer -.-> lab-38385{{"React useForm 钩子"}} end

React useForm 钩子

虚拟机中已提供 index.htmlscript.js。一般来说,你只需在 script.jsstyle.css 中添加代码。

要从表单字段创建有状态值,你可以使用 useState() 钩子为表单中的值创建一个状态变量。然后,创建一个函数,该函数根据表单字段触发的适当事件来更新状态变量。

以下是一个示例实现:

const useForm = (initialValues) => {
  const [values, setValues] = React.useState(initialValues);

  return [
    values,
    (e) => {
      setValues({
        ...values,
        [e.target.name]: e.target.value
      });
    }
  ];
};

在上述示例中,useForm() 接受一个初始状态对象,使用 useState() 创建一个状态变量 values,并返回一个包含 values 和一个根据传递给它的事件更新 values 的函数的数组。

你可以在表单组件中像这样使用 useForm()

const Form = () => {
  const initialState = { email: "", password: "" };
  const [values, setValues] = useForm(initialState);

  const handleSubmit = (e) => {
    e.preventDefault();
    console.log(values);
  };

  return (
    <form onSubmit={handleSubmit}>
      <input type="email" name="email" onChange={setValues} />
      <input type="password" name="password" onChange={setValues} />
      <button type="submit">提交</button>
    </form>
  );
};

ReactDOM.createRoot(document.getElementById("root")).render(<Form />);

Form 组件中,使用初始状态对象调用 useForm(),并返回一个包含 valuessetValues() 的数组。handleSubmit() 函数在表单提交时将 values 对象记录到控制台。input 元素设置为使用 setValues() 函数更新表单值。

请点击右下角的“Go Live”以在端口 8080 上运行 Web 服务。然后,你可以刷新“Web 8080”标签页来预览网页。

总结

恭喜你!你已经完成了 React useForm 钩子实验。你可以在 LabEx 中练习更多实验来提升你的技能。