#reactjs #switch-statement
#reactjs #оператор переключения
Вопрос:
Мне нужно изменить компонент, который отображается в зависимости от значения флага. 0 равно нулю, но 1 и 2 будут генерировать один и тот же компонент, но с другим пользовательским сообщением.
Я пытался собрать переключатель по частям, но я не получаю никакого вывода на консоль.
switch (flagValue) {
case 1:
console.log('1')
break;
case 2:
console.log('2 or 5')
break;
default:
break;
}
Возможно, я здесь не совсем прав ^^
Это код, для которого я пытаюсь использовать вариант переключения. <AlertBox>
Содержимое компонента будет меняться в зависимости от case:1
или case:2
if (flagValue !== 0) {
return null;
} else
return (
<AlertBox
title={`Your ${
this.props.Year
} Payment Has Not Been Processed`}
content={
<span>
custom text here
<b>
{` ${this.props.month}`} 15,{' '}
{`${this.props.currentYear}`}{' '}
</b>
</span>
}
headerLevel={2}
/>
);
Комментарии:
1. Вы можете найти эту библиотеку react: npmjs.com/package/react-floco полезно, если в будущем вам потребуется выполнять рендеринг с помощью операторов switch / case
Ответ №1:
если вам явно нужны только значения 1 и 2, вы можете использовать простой условный рендеринг. Обратите внимание, что это, вероятно, становится довольно уродливым, как только вы добавляете больше обращений.
return (
<AlertBox
title={`Your ${
this.props.Year
} Payment Has Not Been Processed`}
content={
<span>
{flagValue === 1 amp;amp; 'Custom Message 1'}
{flagValue === 2 amp;amp; 'Custom Message 2'}
<b>
{` ${this.props.month}`} 15,{' '}
{`${this.props.currentYear}`}{' '}
</b>
</span>
}
headerLevel={2}
/>
);
Ответ №2:
Вы проверили, что значение флага является числом, а не строкой? Операторы переключения используют строгое равенство ===
.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch