通过原生 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
分享给朋友:

相关文章

react native 如何

react native 如何

安装 React Native 开发环境 确保系统已安装 Node.js(建议版本 16 或更高)。通过以下命令安装 React Native CLI 工具: npm install -g reac…

vue单选实现

vue单选实现

Vue 单选实现 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定单选按钮 通过 v-model 绑定一个变量,可以实现单选效果。当用户选择不同的选…

vue实现单选

vue实现单选

Vue 实现单选按钮 在 Vue 中实现单选按钮通常使用 v-model 绑定数据,结合 <input type="radio"> 或第三方组件库(如 Element UI、Ant Des…

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impo…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修…

vue单选实现

vue单选实现

Vue 单选实现方法 在 Vue 中实现单选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定单选按钮 通过 v-model 绑定到同一个变量,实现单选效果: <…