Сначала вам нужно иметь отдельные флаги для каждого значка.
Я не смог протестировать следующий код из-за зависимостей, но это то, что вы можете сделать:
constructor() {
super();
this.state = {
items: [
{ name: 'Bread Cheese', options: ['Monterrey Jack', 'Cheddar'] },
{ name: 'Combo Side', options: ['Fries', 'Sprouts', 'Sweet Potato Fries', 'Tots'] },
{ name: 'Sandwich Details', options: ['No Tomatoes', 'No sauce', 'Extra Cheese', 'Extra Onions'] },
{ name: "It's a wrap", options: ['gluten free', 'extra sauce', 'extra cheese', 'extra lettuce', 'extra pilaf'] }
],
show: {},
};
}
toggle(option) {
this.setState((prevState) => {
if (prevState.show[option]) {
return {
...prevState,
show: { ...prevState.show, [option]: !prevState.show[option] }
}
} else {
return {
...prevState,
show: { ...prevState.show, [option]: true }
}
}
});
}
renderRadioButton = (item) => {
let iconSolid = <Icon name="circle" color="darkgray" type='solid' />,
iconLight = <Icon name="circle" color="darkgray" type='light' />;
return (
<View>
{item.options.map(option =>
<ListItem selected={false} onPress={this.toggle.bind(this, option)}>
<View style={styles.icon}>
{this.state.show[option] ? iconSolid : iconLight}
</View>
<Text style={styles.iconPadding}>{option}</Text>
</ListItem>)}
</View>
);
};
Дайте мне знать, если это поможет.