Если-иначе состояние Reactjs

Я пытаюсь получить оператор if-else на основе значения состояния. Мой код настроен таким образом, чтобы изменять состояние всякий раз, когда и на что изменяется элемент <select>.

Я пытаюсь сделать что-то вроде этого:

if (this.state{value:} == "string")
{
   //Do this
}

Однако, похоже, не может правильно это сделать. Что может быть лучшим предложением или правильным способом сделать это?

Фактический код, который я пытаюсь:

  7     this.state = {value: 'empty'};
  8   }
  9   SelectChange = (event) => {
 10     this.setState({value: event.target.value});
 11     if (this.state[value] == "string" )
 12     {
 13       console.info("string");
 14     }
 15   }
 16   /*}
 17   AddListener = (event) => {
 18     var id = event.target.id;
 19     var selectElements = document.getElementById(id);
 20     var stringSpec = id.substr(10, 11);
 21     var specLeng = "specifySection" + stringSpec;
 22     //console.info("This Id: " + id + "NumString: |" + stringSpec + "| New Id: "     + specLeng);*/
 23     /*selectElements.addEventListener("change", function(){
 24       moreInfo(id, specLeng);
 25     }, false); */
 26   render (){
 27     const {SelectChange} = this;
 28     const {value} = this.state;
 29     return (
 30       <div>
 31         <div>
 32           <label><strong>New Field </strong></label>
 33           <div id = "remove-" className = "remove" style = {{display: "inline", visibi    lity: "hidden"}}>
 34            <label> --Remove </label> <input type = "checkbox" id = "removeBox" class    Name = "rmvCheckbox" />
 35             <br />
 36           </div>
 37           <label> Name: </label>
 38           <input id = "name-" className = "name" type = "text" name = "name" /> <br />
 39           <label> Description: </label>
 40           <input id = "description-" className = "description" name = "description" />     <br />
 41           <label> Datatype: </label>
 42           <select value = {value} onChange = {SelectChange} id = {`selectData-${this.p    rops.number}`} className = "selectData" name = "selectData" /*onClick = {AddListener}*    />

Что такое value? Вы можете показать нам код jsx?

bird 01.03.2019 04:41

Проверьте также это решение stackblitz.com/edit/react-4rj1nk

Jayavel 01.03.2019 05: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) для оценки ваших знаний,...
2
2
76
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

попробуй это

if (this.state.value == "string"){
 //do this
}

вариант 2

this.state.value == "string" ? handleTrue() : handleFalse();

вариант 3.. если вы хотите проверить только верно

this.state.value && handleTrueLogic();

Я пробовал это, однако, похоже, это не сработало. Я просто пытался что-то вывести в консоль, и ничего не получилось

Alex Bailey 01.03.2019 04:44

@alex -> показывать мне свою функцию onchange() всякий раз, когда вы нажимаете на выбранный элемент?

sathish kumar 01.03.2019 04:45

Вы сделали неправильный синтаксис. Если value является динамическим. Должен быть

if (this.state[value] == "string")
{
   //Do this
}

дал мне ошибку «значение не определено без определения», когда я попробовал этот синтаксис

Alex Bailey 01.03.2019 04:47
Ответ принят как подходящий

this.setState({}) — это асинхронная функция. Поэтому, когда вы используете this.state.value в условии if сразу после этой функции. Значение еще не установлено. Таким образом, вы можете получить значение, переданное из параметра

if (event.target.value === "string")

Или вы можете использовать функцию обратного вызова

this.setState({value: event.target.value}, () => {
  if (this.state.value === 'string') {
    // Do what you want here
  }
})

разве это не typeof (this.state.value) === 'string'? this.state.value будет чем-то вроде «некоторое значение»

Jayavel 01.03.2019 05:38

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