Я пытаюсь получить оператор 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}* />
Проверьте также это решение stackblitz.com/edit/react-4rj1nk



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


попробуй это
if (this.state.value == "string"){
//do this
}
вариант 2
this.state.value == "string" ? handleTrue() : handleFalse();
вариант 3.. если вы хотите проверить только верно
this.state.value && handleTrueLogic();
Я пробовал это, однако, похоже, это не сработало. Я просто пытался что-то вывести в консоль, и ничего не получилось
@alex -> показывать мне свою функцию onchange() всякий раз, когда вы нажимаете на выбранный элемент?
Вы сделали неправильный синтаксис. Если value является динамическим. Должен быть
if (this.state[value] == "string")
{
//Do this
}
дал мне ошибку «значение не определено без определения», когда я попробовал этот синтаксис
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 будет чем-то вроде «некоторое значение»
Что такое
value? Вы можете показать нам код jsx?