我已经设置了一个初始状态来存储表单中的所有值.但是,为了告诉程序我针对的是一个复选框,我需要指定类型:

e.target.type === 'checkbox'

即使它工作了,我觉得我不应该为了拉出它的值而指定类型.有没有人能告诉我,这是正确的做法,还是我漏掉了什么?

我所在的州在与表单交互时会打印usernamelastnameaccept个字段,例如:

{username: "Mike", lastname: "Brown", accept: true}

这是一个有效的DEMO:

推荐答案

如果不想在handleChange中使用条件,可以将值直接传递给函数,如下所示:

const handleChange = (attribute, value) =>
  setInitialState((prev) => ({
    ...prev,
    [attribute]: value
  }));

在您的表单中,请这样使用它:

return (
  <form>
    <input
      type="text"
      value={username}
      onChange={(e) => handleChange("name", e.target.value)}
    />
    <input
      type="checkbox"
      checked={accept}
      onChange={(e) => handleChange("accept", e.target.checked)}
    />
  </form>
);

希望能有所帮助.

Reactjs相关问答推荐

NextJs Form不允许我输入任何输入,

如何在关闭和打开此 Select 输入时应用旋转效果?

将对象添加到集合中的数组时的no_id字段

错误./src/TopScroll.js 31:21-31导出';(作为';随路由导入)在';Reaction-Router-Dom';中找不到

StyleX中的多语言支持

使用自动播放的视频组件呈现登录页面时出现JEST测试错误

如何获取用户在 GooglePlacesAutocomplete 中输入的文本?

如何垂直对齐 React Bootstrap Table 行中的项目

在 React 中,如何在指向同一组件的路由中拥有未定义数量的多个动态路径段?

ReactJS 共享上下文

在 useSelector() 中使用 array.map() 如何导致组件在分派操作时重新渲染?

在react的useEffect钩子中,我的函数被调用,但只有第一个函数能够改变状态,第二个函数无法改变状态.

单击按钮时如何添加或删除 3d 对象

图像路径很奇怪,部署 Next.js 应用程序后我看不到任何图像

Suspense/Await - 解析数据加载/保存到状态后无限循环

为嵌套路由配置一个不存在的 url 的重定向

将路径数组传递给Route会引发错误

如何在 MUI 数据网格中的 renderCell 组件之间传递状态

如何使用 UseState 正确测试组件

Context Api React 的问题