Cамый правильный вариант создать компонент
SwitchGroup:
const options = [
{
value: 'wifi',
title: 'WiFi',
},
{
value: 'isBT',
title: 'BT',
},
];
class Expample extends Component {
state = {
switch = '',
};
handleChange = e => {
const { name, value } = e.target;
this.setState({
[name]: value,
});
};
render() {
return (
<Wrapper>
<SwitchGroup
onChange={this.handleChange}
name="switch"
value={this.state.switch}
options={options}
/>
</Wrapper>
);
}
}
Сам компонент написать просто
class SwitchGroup extends Component {
...
handleClick(value) {
const { name, onChange } = this.props;
...
onChange({
e: {
target {
name,
value,
},
}
});
}
render() {
return(
<Wrapper>
{this.props.options.map((el, i) => (
<Switch
key={i}
onClick={() => handleClick(el.value)}
isActive={el.value === this.props.value}
...
>
{el.title}
</Switch>
))}
<Wrapper />
);
}
}
Тут надо немного дописать реализацию, показана сама идея.
Чем такое решение лучше. Оно просто масштабируется.
handleChange абстрактный слушатель и может слушать все. А
SwitchGroup вы сможете добавлять на страницу сколько захотите и с любым набором опций.