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

react实现单选

2026-01-26 13:46:47React

React 实现单选功能

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

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

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

react实现单选

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 和额外的功能。

react实现单选

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 处理选中的值。

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
分享给朋友:

相关文章

vue单选按钮实现

vue单选按钮实现

Vue 单选按钮实现方法 在 Vue 中实现单选按钮可以通过 v-model 指令绑定数据,结合 <input type="radio"> 或第三方组件库完成。以下是几种常见实现方式:…

react native如何启动

react native如何启动

如何启动 React Native 项目 安装 Node.js 和 npm 确保已安装 Node.js(建议版本 16 或更高)和 npm(Node.js 自带)。可通过以下命令检查版本: node…

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

如何构建react

如何构建react

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

react 如何debug

react 如何debug

React 调试方法 使用 React Developer Tools React Developer Tools 是浏览器扩展,支持 Chrome 和 Firefox。安装后,可以在开发者工具中查看…

react如何配置

react如何配置

配置React项目的基本步骤 安装Node.js和npm 确保系统已安装Node.js(包含npm)。可通过命令行检查版本: node -v npm -v 创建React项目 使用官方工具Creat…