#javascript #reactjs #react-router
#javascript #reactjs #реагировать-маршрутизатор
Вопрос:
Я хочу отображать некоторую часть Html, только если одна из переменных имеет значение true. Я видел примеры, когда я могу вернуть весь элемент, но мне нужно только условие if для одной части html. Я хочу показать только 10 строк, если одна из переменных имеет значение true, но html с 500 строками является обычным. Могу ли я сделать это в функции return?
const getCustomers= (props) => {
useEffect(() =>{ do something...});
return (
<>
if(test === true){
<div> 10 lines</div>
else
{
do not show this div
}
}
<div> 500 lines</div> // Common
</>
)
};
Ответ №1:
Условный рендеринг поддерживается только с использованием троичного оператора и логического оператора and:
{
something ? '10 lines' : '500 lines'
}
{
something amp;amp; '10 lines' || '500 lines'
}
if-else
инструкции не работают внутри JSX. Это связано с тем, что JSX — это просто синтаксический сахар для вызовов функций и построения объектов.
Для получения более подробной информации вы можете прочитать это и документы
Ответ №2:
Старайтесь избегать логики внутри ваших операторов return.
Вы можете присвоить свой условный вывод значению JSX и всегда отображать его.
const Customers = () => {
const optionalDiv = test === true amp;amp; <div>10 lines</div>;
return (
<>
{optionalDiv}
<div>500 lines</div>
</>
);
};
Комментарии:
1. Я бы поступил точно так же… Лучшее решение, на мой взгляд.
Ответ №3:
вы можете использовать условный (троичный) оператор
return (
<>
{ test === true ? (<div> 10 lines</div>) : null }
<div> 500 lines</div>
</>
)
Ответ №4:
Я думаю, что просто делать это так, как это должно получиться —
return (
<>
{test? <div> 10 lines</div> : null}
<div> 500 lines which are common</div>
</>
);