Я использую флажок реагировать родные элементы, у меня есть 2 флажка, и я хочу выбрать только один из них, и мне удалось это сделать, но я пытаюсь использовать console.info только для флажка, но он не работает, потому что они имеют два разных состояния , так как я могу определить, какой флажок был отмечен в моем приложении, используя состояние? вот код:
Начальное состояние:
state: {
single: false,
married: false
}
Флажки:
<CheckBox title = "Single"
checked = {this.state.single}
onPress = {() => this.setState({ single: !this.state.single,
married: false})}/>
<CheckBox title = "Married"
checked = {this.state.married}
onPress = {() => this.setState({ married: !this.state.married,
single: false})}/>
У меня есть API, и я хочу опубликовать в нем данные, у него есть атрибут maritalStatus, и я хочу отправить либо женатого, либо одинокого в виде строкового значения на основе установленного флажка.
@HemantParasha хорошо, но если я хочу отправить правду внутри почтового вызова, как я могу это сделать?
Я думаю, вам нужно перефразировать свой вопрос и предоставить дополнительную информацию о том, чего вы на самом деле хотите достичь, и предоставить код, связанный с этим. Все это сейчас так туманно.
@Andrew console.info(this.state.married) или console.info(this.state.single), они возвращают true или false в зависимости от проверенного, но дело в том, что мне нужно только истинное значение, только без использования 2 состояния
@Andrew, это моя точка зрения, я не могу понять, как проверить
Обновите свой вопрос, указав, как вы будете использовать результат
@Андрей обновил
Какой тип переменной marriedStatus? логическое значение? Нить?
@Andrew снова обновился



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Похоже, они работают xor. Вам нужно будет установить текущее состояние всех, посмотрев прошлое состояние нажатой кнопки.
http://www.howtocreate.co.uk/xor.html
Один:
{single: !this.state.single, married: this.state.single}
женат замужем
{single:this.state.married, married: !this.state.married}
Я не думаю, что вам нужно управлять двумя состояниями для этого. В этом случае человек может быть женатым или холостым. Итак, вам нужно сделать что-то вроде этого
Если вы хотите, чтобы оба флажка были сняты при загрузке, тогда
state: {
single: void 0,
}
<CheckBox title = "Single"
checked = {this.state.single}
onPress = {() => this.setState({ single: !this.state.single})}/>
<CheckBox title = "Married"
checked = {this.state.single !== undefined && !this.state.single}
onPress = {() => this.setState({ married: !this.state.single})}/>
или если один проверил то
state: {
single: true,
}
<CheckBox title = "Single"
checked = {this.state.single}
onPress = {() => this.setState({ single: !this.state.single})}/>
<CheckBox title = "Married"
checked = {!this.state.single}
onPress = {() => this.setState({ married: !this.state.single})}/>
Надеюсь, что это работает для вас. :)
На самом деле существует три условия.
Если у вас есть проверка, означающая, что пользователь должен установить флажок, вы можете не принимать во внимание первое условие. Исходя из этого, можно сказать, как только пользователь выбрал ящик, каким был его выбор, зная состояние только одного из ящиков. Итак, если у вас есть кнопка, которая проверяет валидацию, вы можете сделать что-то вроде этого.
<Button
title = {'check married status'}
onPress = {() => {
if (!this.state.single && !this.state.married) {
alert('Please check a box)
} else {
// we only need to check one of them
let marriedStatus = this.state.married ? 'married' : 'single';
alert(`You are ${marriedStatus}`)
// then you can do what you want with the marriedStatus here
}
}}
/>
У вас есть состояние как для холостых, так и для женатых. Тот, который выбран, будет верным. Итак, вы уже знаете, какой флажок установлен.