input elements should be controlled components in react, meaning the value of the input elements will be controlled by react. With controlled components, value of the input element is driven by react state.
This way, you can easily read the value of the radio inputs from the state of your component.
Following code snippet shows the value of the selected radio input.
class App extends React.Component {
constructor() {
super();
this.state = {
value1: 'First Radio Button Value',
value2: 'Second Radio Button Value',
selectedRadioInput: ''
};
}
handleChange = (e) => {
this.setState({ selectedRadioInput: e.target.value });
}
render() {
return (
<div>
<input
type="radio"
value={this.state.value1}
onChange={this.handleChange}
className="toggle_option"
id="first-toggle"
name="toggle_option"
/>
<span>Radio Button 1</span>
<br/>
<input
type="radio"
value={this.state.value2}
onChange={this.handleChange}
className="toggle_option"
id="second_toggle"
name="toggle_option"
/>
<span>Radio Button 2</span>
<h2>{this.state.selectedRadioInput}</h2>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
Here's the same code snippet with functional component instead of class based component
function App() {
const [data, setData] = React.useState({
value1: 'First Radio Button Value',
value2: 'Second Radio Button Value',
selectedRadioInput: ''
});
const handleChange = (e) => {
setData({ ...data, selectedRadioInput: e.target.value });
}
return (
<div>
<input
type="radio"
value={data.value1}
onChange={handleChange}
className="toggle_option"
id="first-toggle"
name="toggle_option"
/>
<span>Radio Button 1</span>
<br/>
<input
type="radio"
value={data.value2}
onChange={handleChange}
className="toggle_option"
id="second_toggle"
name="toggle_option"
/>
<span>Radio Button 2</span>
<h2>{data.selectedRadioInput}</h2>
</div>
);
}
ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.1/umd/react-dom.production.min.js"></script>
<div id="root"></div>