如何在反应中使用复选框形式?

2024-02-11

有两个组件container and presenter.
下面的代码显示单个复选框状态变为 true,并且另一个复选框也正在更新。那么,如何处理具有状态的多个复选框?

容器:

 export default class ApplyFormContainer extends Component {
      constructor(props) {
        super(props);
        this.state = {
          form: {
            gender: '',
            checked: false,
          },
        };
      }
      handleCheckBox = e => {
        const {
          target: { checked },
        } = e;
        this.setState({
          form: {
            ...this.state.form,
            checked,
          },
        });
      };
      handleGender = id => {
        this.setState({
          form: {
            ...this.state.form,
            gender: id,
          },
        });
      };

      render() {
        const { handleGender, handleCheckBox } = this;
        const { form } = this.state;
        return (
          <Container>
            <ApplyFormPresenter
              form={form}
              handleGender={handleGender}
              handleCheckBox={handleCheckBox}
            />
          </Container>
        );
      }
    }

主持人:

import React from 'react';
import styled from 'styled-components';

const Form = styled.form`
  display: grid;
`;
const Flex = styled.div`
  display: flex;
  align-items: center;
  justify-content: center;
  label {
    margin: 2rem;
    /* input[type='checkbox'] {
      display: none;
    }
  } */
  }
`;

const ApplyFormPresenter = ({ form, handleGender, handleCheckBox }) => {
  return (
    <div>
      <Form>
        <Flex>
          <label>
            <span>TEST</span>
            <input
              type="checkbox"
              value="love"
              onChange={handleCheckBox}
              checked={form.checked}
            />
          </label>{' '}
          <label>
            <span>TEST</span>
            <input
              type="checkbox"
              value="friend"
              onChange={handleCheckBox}
              checked={form.checked}
            />
          </label>{' '}
          <label>
            <span>TEST</span>
            <input
              type="checkbox"
              value="money"
              onChange={handleCheckBox}
              checked={form.checked}
            />
          </label>
        </Flex>
      </Form>
    </div>
  );
};

做这件事有很多种方法。我的建议:您希望将值保存在对象中并映射其键。

这是一个使用的解决方案Hooks https://reactjs.org/docs/hooks-intro.html:

function App() {
  const [state, setState] = React.useState({
    gender: false,
    love: false
  });

  const handleToggle = ({ target }) =>
    setState(s => ({ ...s, [target.name]: !s[target.name] }));

  return (
    <div>
      {Object.keys(state).map(key => (
        <input
          type="checkbox"
          onChange={handleToggle}
          key={key}
          name={key}
          checked={state[key]}
        />
      ))}
    </div>
  );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在反应中使用复选框形式? 的相关文章

  • 是否可以覆盖material-ui组件的默认道具?

    可以说我想要每一个Button组件来自material ui有默认的 propsvariant contained color secondary 这可能吗 这方面的文档在这里 https material ui com customiza
  • 设置时区 React-Datepicker

    我正在使用反应日期选择器 https www npmjs com package react datepicker让用户选择一个日期 但是 现在它使用本地时间 PDT 但我想对其进行硬编码以使用特定时区 PST 我尝试使用utcOffset
  • 如何为 NextAuth.js 创建自定义 UI(使用 AWS Cognito)?

    是否可以为 AWS Cognito 提供自定义 UINextAuth js https next auth js org 当我使用 NextAuth js 调用 API 时 我看到这个 主观上丑陋的 屏幕 只有一个按钮可以将您重定向到真正的
  • 表单提交 ReactJS 时出现“类型错误:尝试获取资源时出现网络错误”

    我尝试在启用跨源的情况下从 API 获取一些数据 但收到此错误 同样的事情与JSON占位符 https jsonplaceholder typicode com 用于测试的在线 REST API 使用他们提供的示例 fetch https
  • 我如何设计react-datepicker的样式?

    我在用着webpack 反应日期选择器并设法使用提供的 css 模块导入其 css import react datepicker dist react datepicker cssmodules css 该组件看起来不错 但现在我想让它像
  • 如何在rails中使用npm包?

    我正在尝试使用王牌编辑 https github com ajaxorg ace在我的 Ruby on Rails 应用程序中 大部分视图由 React 组件组成 我正在使用反应轨道宝石 https github com reactjs r
  • 反应模式 shouldCloseOnOverlayClick 不起作用

    我正在使用反应模式 点击叠加层后模式不会关闭 我为 isOpen 和 onRequestClose 提供了属性 但模式保持打开状态 closeModal gt this setState modalIsOpen false
  • React Map 总是使用最后一个元素的数据调用方法

    我正在制作一个社交媒体应用程序 我正在循环浏览所有评论并将其显示在用户界面上 当我单击编辑时 最后一条评论的文本总是显示在输入中 我尝试了很多不同的方法 改变了结构 使用bind来绑定上下文 但没有任何帮助 我正在使用 React Mate
  • Menu.Item 中的 Antd 自动换行

    可以在 Menu Item 组件中应用自动换行吗 示例不起作用
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • 从 React Native Js 代码调用 Android Native UI 组件方法

    我创建了一个 CustomView SignatureView java 它扩展了 LinearLayout 以捕获 Android Native 中的签名 并创建了SignatureCapturePackage java和Signatur
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • 在react中使用map方法渲染JSON API

    我对 JSON 对象 数组和映射方法的语法和结构有困难 我是 React 新手 正处于学习的初始阶段 这是我粘贴在下面的 JSON 文件代码 cloud Asia availability last15Min 100 last24Hour
  • 如何删除原生选项卡的边框

    我需要删除图像中标记的边框 我正在使用react native 和native base 选项卡 我需要删除选项卡的底部边框
  • webpack 4 React loadable 不会根据卡盘点分割供应商

    我目前正在使用 webpack 4 和 React loadable 来创建块 它实际上分块取决于断点 然而 供应商规模保持不变 React loadable 还不支持 webpack 4 吗 或者我缺少一些设置 css 实际上似乎被分成了
  • Next.js 中的 .env.local 文件未正确设置

    当我创建一个 env local文件在我的项目根目录中 它设置不正确 在文件中 我有我的 API 密钥 如下所示 API KEY SOME API KEY 然后当我尝试访问它时获取服务器端属性 with 进程 env API KEY 它不起
  • yup.js 验证数字字段大于同级字段,或者可以为空

    我正在使用 Yup js 来验证一些表单字段 我有两个整数字段 Year Built Year Renovated Year Built是必填字段 Year Renovated is not 不过 装修年份可以留空如果有一个值它应该大于建造
  • className 属性是否承担 Reactjs 中 id 属性的角色?

    由于 id 属性在 Reactjs 组件中很少使用 因为 id 属性意味着组件不会被重用 那么是否使用 className 属性来代替 id 呢 如果是这样的话 那么 Reactjs 中相当于 HTML 中的 class 属性的是什么 cl
  • 在 ReactJS 中创建动态目录

    我有一个组件 它代表一个页面 其中有多个SectionHeader 组件作为该页面的子组件 我想通过检查 Page 的子项 SectionHeaders 来动态创建目录

随机推荐

  • 单选按钮单击和重新单击

    我在 Android 中有一个单选按钮组 选择项目时我会收到事件 目前为止还正常 但如果用户单击已选择的项目 我不会收到该事件 有没有办法知道 接收事件 用户何时点击单选按钮 无论它是否被选择 多谢 我不明白为什么当单击已选中的单选按钮时会
  • c++11 std::hash 函数对象类线程安全

    在 c 11 中声明的哈希函数类对象
  • 使用共享存储库模型的 GitHub 协作

    有人可以向我提供 GitHub 协作备忘单 供希望对存储库具有平等访问 权利的两人团队使用吗 我对使用分叉的必要性感到困惑 这对于开发人员分散的大型开源项目来说似乎是有意义的 但当我和我的搭档彼此相距 10 英尺时 似乎有点矫枉过正 Tha
  • Git:如何在同一分支中的提交之上重新建立分支? [复制]

    这个问题在这里已经有答案了 参考文献这个优秀的答案 https stackoverflow com a 38430972 3398271 我读过并且 我认为 我理解了 但据我所知并没有回答我的具体问题 因为它解释了如何重新基于提交中的提交
  • Selenium Firefox IDE 可以实现吗?

    这是这个问题的后续 想要创建一个表单填充程序 java jsp html 足够吗 https stackoverflow com questions 17329996 want to create a form filler is java
  • Dropbox Saver 可以接受来自 createObjectURL() 的数据吗?

    Dropbox Chooser 和 Saver 工具 https www dropbox com developers dropins对于这两项任务来说似乎非常酷 让用户从 Dropbox 中选择一个文件 页面就可以下载它 即 Dropbo
  • 块与 Objective-C 中的普通方法和函数有何不同?

    与 Objective C 中的普通方法和函数相比 使用块有什么优势 我已阅读文档 但找不到块而不是其他语言功能的具体用法 我确信我错过了一些东西 所以有人可以用比现有文档更简单的方式解释块的优点吗 块是一种包装一段代码并有效存储它以供以后
  • 将 Angularjs 和 Rails 应用程序分离为独立组件

    我想尝试一下 Angularjs 然而 我一直难以决定应该将我的角度应用程序放在哪里 我使用 Rails 框架作为后端 我看过教程 其中整个角度应用程序都位于 asset javascript 文件夹下 我想知道是否可以让它完全位于我的ra
  • Tailwind CSS:有没有办法定位下一个兄弟?

    我有一个带有如下标签的无线电输入 输入被隐藏 标签用于制作一个视觉上吸引人的圆圈供用户单击
  • receiveCompletion 出错时订阅取消

    在我的以 MVVM 模式设计的应用程序中 我有一个登录视图 如果存在网络或身份验证问题 登录可能会失败 我的目标是捕获错误并显示相应的警报 我为警报定义了枚举 如下所示 enum Alerts Identifiable var id Int
  • Application Insights 是否跟踪引荐来源网址?

    我想我到处查看和搜索 但找不到任何带有推荐流量数据的图表或报告 我使用的是在预览 Azure 门户中存储数据的最新版本 在旧的应用程序洞察中 即在 VS Online 中 有此数据 有谁知道在新门户中是否可以找到它以及在哪里可以找到它 提前
  • Centos 7 Postgres 服务的环境变量

    最近我遇到了使用自定义 PGDATA 路径启动 postgresql 服务的问题 它尝试查找未初始化的默认数据目录 var lib pgsql 9 3 data 因此触发了这些错误 问题似乎是 Centos 7 上的服务启动器删除了所有环境
  • 如何在 Android 上将文件从内部应用程序存储移动/重命名到外部存储?

    我正在从互联网下载文件并将流数据保存到我的应用程序内部存储中的临时文件中获取文件目录 http developer android com reference android content Context html getFilesDir
  • IllegalArgumentException:类 TestDatabaseAutoConfiguration$EmbeddedDataSourceFactoryBean 中没有可见的构造函数

    我正在尝试使用 h2 数据库为 Spring Boot JPA 应用程序编写集成测试 不知何故 TestEntityManager 没有被创建 我尝试在论坛上寻找一些帮助 但找不到任何相关信息 感谢任何人可以提供帮助或提供一些指导 Than
  • 将 wc 行附加到文件名

    标题说明了一切 我已经设法得到这样的行 lines wc file txt awk print 1 但我可以使用辅助功能将其附加到文件名中 向我展示如何循环遍历当前目录中的所有 txt 文件的奖励积分 find name txt execd
  • 在 mac、ios、linux 上使用 calibri 风格

    由于 Windows 操作系统中存在 calibri 样式 但 linux mac ios 中不存在 calibri 样式 如果我的项目仅在 calibri 中具有其样式 并且我必须严格使用它 那么如果用户使用linux 并运行我的项目 那
  • 在android中使用Geocoder获取地址

    我尝试通过提供静态地理坐标来获取特定位置的地址 我无法获取地址 有人可以帮忙吗 我只需要检查这个功能是否适合我 这是我的片段 Geocoder geocoder new Geocoder AddressSimulator this Loca
  • 如何使用 docker-compose 将环境变量设置到 docker 容器中

    我想设置凭据以使用 Google Translate Api 客户端 因此我必须设置环境变量GOOGLE APPLICATION CREDENTIALS该值是凭证文件的路径 来自 Google Cloud 当我被利用的时候docker bu
  • 将未知长度的 char** (c) 转换为 vector (c++) [重复]

    这个问题在这里已经有答案了 如何将 C char 转换为 C 矢量 是否有一些内置功能可以用来做到这一点 或者通过一系列迭代步骤来完成它是否更好 编辑 由于各种原因 C 数组中的元素数量未知 我可以将其作为另一个参数传递 但这绝对有必要吗
  • 如何在反应中使用复选框形式?

    有两个组件container and presenter 下面的代码显示单个复选框状态变为 true 并且另一个复选框也正在更新 那么 如何处理具有状态的多个复选框 容器 export default class ApplyFormCont