通过原生 HTML 的 radi…">
当前位置:首页 > React

react实现单选

2026-01-26 13:46:47React

React 实现单选功能

在 React 中实现单选功能可以通过多种方式完成,以下是几种常见的方法:

使用原生 <input type="radio">

通过原生 HTML 的 radio 输入类型,结合 React 的状态管理实现单选功能。创建一个状态变量来存储当前选中的值,并通过 onChange 事件更新状态。

import React, { useState } from 'react';

function RadioGroup() {
  const [selectedOption, setSelectedOption] = useState('');

  const handleChange = (event) => {
    setSelectedOption(event.target.value);
  };

  return (
    <div>
      <label>
        <input
          type="radio"
          value="option1"
          checked={selectedOption === 'option1'}
          onChange={handleChange}
        />
        Option 1
      </label>
      <label>
        <input
          type="radio"
          value="option2"
          checked={selectedOption === 'option2'}
          onChange={handleChange}
        />
        Option 2
      </label>
      <label>
        <input
          type="radio"
          value="option3"
          checked={selectedOption === 'option3'}
          onChange={handleChange}
        />
        Option 3
      </label>
    </div>
  );
}

export default RadioGroup;

使用 map 动态生成单选选项

如果选项是动态的,可以通过数组 map 方法生成单选按钮,减少重复代码。

import React, { useState } from 'react';

function DynamicRadioGroup() {
  const options = ['option1', 'option2', 'option3'];
  const [selectedOption, setSelectedOption] = useState('');

  const handleChange = (event) => {
    setSelectedOption(event.target.value);
  };

  return (
    <div>
      {options.map((option) => (
        <label key={option}>
          <input
            type="radio"
            value={option}
            checked={selectedOption === option}
            onChange={handleChange}
          />
          {option}
        </label>
      ))}
    </div>
  );
}

export default DynamicRadioGroup;

使用第三方库(如 react-radio-group

如果需要更复杂的单选功能或更好的可维护性,可以使用第三方库如 react-radio-group。这些库通常提供更简洁的 API 和额外的功能。

import React, { useState } from 'react';
import { RadioGroup, Radio } from 'react-radio-group';

function ThirdPartyRadioGroup() {
  const [selectedValue, setSelectedValue] = useState('option1');

  return (
    <RadioGroup
      name="radioGroup"
      selectedValue={selectedValue}
      onChange={setSelectedValue}
    >
      <Radio value="option1" /> Option 1
      <Radio value="option2" /> Option 2
      <Radio value="option3" /> Option 3
    </RadioGroup>
  );
}

export default ThirdPartyRadioGroup;

自定义单选组件

如果需要完全自定义样式或行为,可以封装一个自定义的单选组件。

import React, { useState } from 'react';

function CustomRadio({ value, checked, onChange, children }) {
  return (
    <label>
      <input
        type="radio"
        value={value}
        checked={checked}
        onChange={onChange}
        style={{ display: 'none' }}
      />
      <span style={{ padding: '8px', background: checked ? 'lightblue' : 'white' }}>
        {children}
      </span>
    </label>
  );
}

function CustomRadioGroup() {
  const [selectedOption, setSelectedOption] = useState('option1');

  const handleChange = (event) => {
    setSelectedOption(event.target.value);
  };

  return (
    <div>
      <CustomRadio
        value="option1"
        checked={selectedOption === 'option1'}
        onChange={handleChange}
      >
        Option 1
      </CustomRadio>
      <CustomRadio
        value="option2"
        checked={selectedOption === 'option2'}
        onChange={handleChange}
      >
        Option 2
      </CustomRadio>
      <CustomRadio
        value="option3"
        checked={selectedOption === 'option3'}
        onChange={handleChange}
      >
        Option 3
      </CustomRadio>
    </div>
  );
}

export default CustomRadioGroup;

表单集成

如果单选按钮是表单的一部分,可以通过 formonSubmit 处理选中的值。

react实现单选

import React, { useState } from 'react';

function FormWithRadio() {
  const [selectedOption, setSelectedOption] = useState('');

  const handleSubmit = (event) => {
    event.preventDefault();
    console.log('Selected option:', selectedOption);
  };

  return (
    <form onSubmit={handleSubmit}>
      <label>
        <input
          type="radio"
          value="option1"
          checked={selectedOption === 'option1'}
          onChange={(e) => setSelectedOption(e.target.value)}
        />
        Option 1
      </label>
      <label>
        <input
          type="radio"
          value="option2"
          checked={selectedOption === 'option2'}
          onChange={(e) => setSelectedOption(e.target.value)}
        />
        Option 2
      </label>
      <button type="submit">Submit</button>
    </form>
  );
}

export default FormWithRadio;

以上方法涵盖了从基础到高级的单选实现方式,可以根据具体需求选择合适的方法。

标签: 单选react
分享给朋友:

相关文章

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

如何用react

如何用react

使用React的基本步骤 安装Node.js和npm 确保系统已安装Node.js和npm。Node.js自带npm,可从官网下载安装包。安装完成后,通过命令行验证版本: node -v npm -…

如何构建react

如何构建react

构建 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过命令行验证: node -v npm -v 使用 Create React Ap…

typescript react 如何

typescript react 如何

TypeScript 与 React 结合使用的方法 在 React 项目中使用 TypeScript 可以提升代码的可维护性和类型安全性。以下是一些关键步骤和最佳实践: 安装 TypeScript…

如何关闭react

如何关闭react

关闭React应用的步骤 在开发或运行React应用时,可能需要关闭正在运行的开发服务器或停止应用。以下是几种常见情况的处理方法: 停止开发服务器 如果正在使用npm start或yarn star…

如何读react源码

如何读react源码

理解React源码的结构 React源码托管在GitHub上,主要分为几个核心模块:react、react-dom、react-reconciler等。react包包含核心API和组件逻辑,react…