const fetching = true;
const data = false;
const showData = true;
{
!!fetching ? <Loader /> : <List data={data} />
}
тут буде показуватись data не в тому випадку коли вона доступна, а коли fetching буде false. Тобто ми привязуєм дані не до перевірки чи вона є, а до fetching який по суті не має до неї відношення
тому нам потрібно ще перевіряти в тій тернарці чи вона є..бо вона на mount буде undefined або null або що не будь пусте.
Прийдеться тоді переписувати так:
{
fetching ? <Loader /> : showData && !!Object.values(data).length ? <List data={data} /> : null
}
і це тільки дві умови. а може бути більше
Тому краще писати так щоб кожна вюшка мала свою особисту умову.
{
fetching && <Loader />;
}
{
showData && !!Object.values(data).length && <List data={data} />;
}
<Loader /> рендериться тільки за своїх умов (fetching)
<List /> - тоже за своїми (showData, dataExist і тд)
нет, лучше использовать тернарный оператор и всегда явно писать альтернативный вариант, даже если он null
не обовязково тому що логічні оператори вертають ітак true/false в будь якому випадку