Хочу реализовать условный рендеринг в функциональном React-компоненте. Не знаю как это сделать в функции.
Мне нужно, чтоб в зависимости от состояния рендерился соответствующий импортированный компонент.
Я написал эту логику с помощью тернарного оператора, и всё работает, но этот код ужасный и нечитабельный.
Мне обязательно нужно реализовать это именно в функциональном компоненте, т.к. использую Хуки.
import React, {useState, useEffect} from 'react';
import Header from './header/header';
import Footer from './footer/footer';
//Один из этих компонентов будет рендерится между Хэдером и Футером ↓
//Название компонента в состоянии (activeItem)
import Landing from './landing/landing';
import BookingManagement from './bookingManagement/BookingManagement';
import BookingTickets from './bookingTickets/bookingTickets';
import EnterProfile from './enterProfile/enterProfile';
import PersonalArea from './personalArea/personalArea';
import Register from './register/register';
import SearchResults from './searchResults/searchResults';
import ChoosePlace from './choosePlace/choosePlace';
function App() {
const [activeItem, setActiveItem] = useState('landing');
useEffect(() => {
console.log(activeItem)
});
return (
<>
<Header changeMain={setActiveItem}/>
{(activeItem=='landing' ? (
<Landing changeMain={setActiveItem}/>
) : (
<></>
))}
{(activeItem=='bookingManagement' ? (
<BookingManagement />
) : (
<></>
))}
{(activeItem=='bookingTickets' ? (
<BookingTickets />
) : (
<></>
))}
{(activeItem=='enterProfile' ? (
<EnterProfile />
) : (
<></>
))}
{(activeItem=='personalArea' ? (
<PersonalArea />
) : (
<></>
))}
{(activeItem=='register' ? (
<Register/>
) : (
<></>
))}
{(activeItem=='searchResults' ? (
<SearchResults/>
) : (
<></>
))}
{(activeItem=='choosePlace' ? (
<ChoosePlace />
) : (
<></>
))}
<Footer changeMain={setActiveItem}/>
</>
);
}
export default App;