【发布时间】:2022-01-05 20:03:42
【问题描述】:
我想在功能性 React 组件中实现条件渲染。我不知道如何在函数中执行此操作。
我需要根据状态来渲染对应的导入组件。
我使用三元运算符编写了这个逻辑,一切正常,但是这段代码很糟糕而且不可读。
import React, { useState, useEffect } from "react";
import Header from "./header/header";
import Footer from "./footer/footer";
// One of these components will be rendered between Header and Footer ↓
// Name of the component in the state (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;
我肯定需要在功能组件中实现这个,因为我使用了钩子。
【问题讨论】:
-
为什么不将字符串映射到组件?
-
看起来你可能正在寻找React Router
标签: javascript reactjs render