Я просто смущен тем, как сопоставить два оператора, например if else из JavaScript, в React Native
например,
if (array.length != null && array.length >= 2){
alert("Array Is Greater Than 2")
}else if (array.length != null ){
alert("Array Is Less Than 2")
}else{
alert("Array is null")
}
Я знаю, как передать условие signle в React Native, например
например,
{
array.length != null &&
<View>
/* Content Here */
</View>
}
или же
{
array.length != null ?
<View>
/* If Content Here */
</View>
:
<View>
/* Else Content Here */
</View>
}
Но как мне создать такое состояние, как первое?



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


У вас могут быть вложенные тернарные условия, но я не буду предлагать этого, потому что это будет не так удобно для чтения. Другой вариант - вы можете поместить все эти условия внутри функции и вызвать эту функцию из метода рендеринга.
Как это:
renderElement () {
if (array.length != null && array.length >= 2){
alert("Array Is Greater Than 2");
return <p>If condition</p>;
}else if (array.length != null ){
alert("Array Is Less Than 2");
return <p>If-Else condition</p>;
}else{
alert("Array is null");
return <p>Else condition</p>;
}
}
render () {
const element = this.renderElement();
// now you can use element to render that element at any place
}
Вложенные тернарные условия:
{
array.length != null && array.length >= 2 ?
<View>
/* Array Is Greater Than 2 */
</View>
:
array.length != null?
<View>
/* Array Is Less Than 2 */
</View>
:
<View>
/* Array Is Null */
</View>
}
У вас может быть вложенная проверка тернарных условий, например
{
array.length != null && array.length >= 2 ?
<View>
/* If Content Here */
</View>
:
array.length != null?
<View>
/* Else if Content Here */
</View>:
<View>
/* Else Content Here */
</View>
}
Однако вы можете просто сделать это, используя if-else в функции, которую вы вызываете из рендеринга, как предлагает @MayankShukla, поскольку она более читабельна, чем вложенные тернарные операторы.
Практически Я не нашел более чистого способа сделать это так, как вы хотите.
Теоретически, вы можете сделать это с помощью вложенного тернарного оператора, но он довольно грязный и нечитаемый.
Я всегда придерживаюсь создания отдельного метода и вызываю его в рендере:
renderView() {
if (array.length != null && array.length >= 2) {
return <div>Array Is Greater Than 2</div>
} else if (array.length != null ) {
return <div>Array Is Less Than 2</div>
} else {
return </div>
}
}
render() {
return <div>{this.renderView()}</div>
}
Большое спасибо за ваши усилия, так как я нашел, что вложенный тройной способ более удобен для меня. Поддерживаю ваш ответ за помощь.
Большое спасибо за ваши усилия, так как я нашел, что вложенный тройной способ более удобен для меня. Поддерживаю ваш ответ за помощь.