📅  最后修改于: 2023-12-03 15:22:53.575000             🧑  作者: Mango
单选按钮 (Radio Buttons) 是 HTML 表单中常用的一种控件,它允许用户从一组选项中选择一个值。在 React 中,我们可以通过使用受控组件 (Controlled Components) 的方式来实现单选按钮。
在 React 中,我们通常把组件的状态 (State) 存储在组件的状态对象中 (State Object)。当状态对象发生变化时,React 会自动重新渲染组件。而受控组件是一种双向绑定的方式,即 React 把组件的状态和用户输入的值绑定在一起,组件的值随着用户输入而自动更新。这种方式可以有效地保证组件的值与页面显示的值一致。
创建一个受控的单选按钮组件,我们需要定义一个状态对象,并将它与单选按钮绑定。组件渲染时,加载数据并将返回数据呈现为单选按钮的形式。
import React, { useState } from 'react';
function RadioGroup(props) {
const [value, setValue] = useState(props.value);
const handleChange = event => {
setValue(event.target.value);
}
return (
<div>
{props.options.map(option => (
<label key={option.value}>
<input type="radio"
value={option.value}
checked={value === option.value}
onChange={handleChange} />
{option.label}
</label>
))}
</div>
);
}
export default RadioGroup;
上面的代码中,我们通过 useState
hook 来创建了一个 value
状态对象,用来维护单选按钮的值。handleChange
函数用来处理单选按钮的变化事件,当用户点击按钮时,它会更新状态对象的值。在 props.options
中定义了单选按钮的选项,包括每个选项的值和标签。在渲染组件时,我们遍历每个选项,并为每个选项生成一个单选按钮 (<input type="radio">
) 和一个标签 (<label>
)。单选按钮的值为选项的 value
属性,标签的文字为选项的 label
属性。
以上代码片段中,我使用了 JSX 语法,用于在 Javascript 中编写类似 HTML 的标记。在 JSX 中,你可以通过将标记插入到 Javascript 代码中来创建组件,而且你可以在代码中使用 if 语句、for 循环等语法来构造更加复杂的页面。
使用上面的 RadioGroup
组件很简单。你只需要通过 props 将需要显示的选项传递给组件,以及使用 value
属性指定默认选中的值即可。
import React from 'react';
import RadioGroup from './RadioGroup';
function App() {
const options = [
{ value: 'apple', label: '苹果' },
{ value: 'orange', label: '橙子' },
{ value: 'grape', label: '葡萄' }
];
const defaultValue = 'apple';
return (
<div>
<RadioGroup options={options} value={defaultValue} />
</div>
);
}
export default App;
上面的代码中,我们传递了一个 options
数组和一个 value
字符串给 RadioGroup
组件。数组中包含了三个选项,每个选项都有一个 value
属性和一个 label
属性,分别表示选项的值和标签。value
属性指定了默认选中的值为 'apple'。当我们在浏览器中打开页面时,就会看到一个包含三个单选按钮的组件,其中 '苹果' 按钮默认被选中。
使用受控组件来创建单选按钮可以让我们更加方便地处理表单数据。同时,组件化的思想也让我们更加容易复用代码,在不同的应用场景中轻松地实现不同的表单控件。