Как я могу определить, какой флажок был установлен в вашем штате?

Я использую флажок реагировать родные элементы, у меня есть 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, и я хочу отправить либо женатого, либо одинокого в виде строкового значения на основе установленного флажка.

У вас есть состояние как для холостых, так и для женатых. Тот, который выбран, будет верным. Итак, вы уже знаете, какой флажок установлен.

Hemant Parashar 03.03.2019 20:05

@HemantParasha хорошо, но если я хочу отправить правду внутри почтового вызова, как я могу это сделать?

Tamara Jane 03.03.2019 20:32

Я думаю, вам нужно перефразировать свой вопрос и предоставить дополнительную информацию о том, чего вы на самом деле хотите достичь, и предоставить код, связанный с этим. Все это сейчас так туманно.

Hemant Parashar 03.03.2019 20:38

@Andrew console.info(this.state.married) или console.info(this.state.single), они возвращают true или false в зависимости от проверенного, но дело в том, что мне нужно только истинное значение, только без использования 2 состояния

Tamara Jane 03.03.2019 20:41

@Andrew, это моя точка зрения, я не могу понять, как проверить

Tamara Jane 03.03.2019 20:47

Обновите свой вопрос, указав, как вы будете использовать результат

Andrew 03.03.2019 20:54

@Андрей обновил

Tamara Jane 03.03.2019 21:00

Какой тип переменной marriedStatus? логическое значение? Нить?

Andrew 03.03.2019 21:02

@Andrew снова обновился

Tamara Jane 03.03.2019 21:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
9
79
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Похоже, они работают 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})}/>

Надеюсь, что это работает для вас. :)

Ответ принят как подходящий

На самом деле существует три условия.

  1. Пользователь не выбрал ящик
  2. Пользователь выбирает одно
  3. Пользователь выбирает женат.

Если у вас есть проверка, означающая, что пользователь должен установить флажок, вы можете не принимать во внимание первое условие. Исходя из этого, можно сказать, как только пользователь выбрал ящик, каким был его выбор, зная состояние только одного из ящиков. Итак, если у вас есть кнопка, которая проверяет валидацию, вы можете сделать что-то вроде этого.

<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
   }
  }}
/>

Другие вопросы по теме