jsx 中的三元运算符中的多个条件我的组件未显示
Multiple condition in ternary operator in jsx my component not showing
我在 jsx 中使用三元运算符来显示我的任何组件。问题是,当我按下其中一个按钮并将我的状态 showChat 设置为 'true' 时,它不会显示我的组件“聊天”。我的三元条件似乎很好,所以我不明白为什么会出现这个问题。知道我该如何解决这个问题吗?
谢谢:)
const Chatroom = () => {
... other states ...
const [showChat, setShowChat] = useState(false);
const [showRoomList, setShowRoomList] = useState(false);
const createRoom = () => {
if (username !== "" && room !== "") {
socket.emit("join_room", room);
setShowChat(true);
}
}
const listeRoom = () => {
if (username !== "") {
socket.emit("room_list", 'roomList');
setShowRoomList(true);
}
}
...
return (
<>
<CssBaseline/>
<main>
<div className={classes.container}>
<Container maxWidth="md">
{!showChat || !showRoomList ? (
<Button onClick={createRoom} disabled={disable} color='primary' variant="contained"> Créer une room </Button>
<Button onClick={listeRoom} disabled={enable} color='primary' variant="outlined"> Liste des rooms </Button>
)
: showRoomList ? (
<ListeRooms socket={socket} username={username}/>
)
:(
<Chat socket={socket} username={username} room={room}/>
)}
</Container>
</div>
</main>
</>
)
}
export default Chatroom;
我不推荐这种条件渲染方式,因为如您所见,它很棘手。可能你在这里弄错了
{!showChat || !showRoomList ? ( -> {!showChat && !showRoomList
我建议你这样做
<Container maxWidth="md">
{!showChat && !showRoomList && (<Button onClick={createRoom}..../>....)}
{showRoomList && <ListeRooms socket=..../>}
{showChat && <Chat.../>}
</Container>
我在 jsx 中使用三元运算符来显示我的任何组件。问题是,当我按下其中一个按钮并将我的状态 showChat 设置为 'true' 时,它不会显示我的组件“聊天”。我的三元条件似乎很好,所以我不明白为什么会出现这个问题。知道我该如何解决这个问题吗?
谢谢:)
const Chatroom = () => {
... other states ...
const [showChat, setShowChat] = useState(false);
const [showRoomList, setShowRoomList] = useState(false);
const createRoom = () => {
if (username !== "" && room !== "") {
socket.emit("join_room", room);
setShowChat(true);
}
}
const listeRoom = () => {
if (username !== "") {
socket.emit("room_list", 'roomList');
setShowRoomList(true);
}
}
...
return (
<>
<CssBaseline/>
<main>
<div className={classes.container}>
<Container maxWidth="md">
{!showChat || !showRoomList ? (
<Button onClick={createRoom} disabled={disable} color='primary' variant="contained"> Créer une room </Button>
<Button onClick={listeRoom} disabled={enable} color='primary' variant="outlined"> Liste des rooms </Button>
)
: showRoomList ? (
<ListeRooms socket={socket} username={username}/>
)
:(
<Chat socket={socket} username={username} room={room}/>
)}
</Container>
</div>
</main>
</>
)
}
export default Chatroom;
我不推荐这种条件渲染方式,因为如您所见,它很棘手。可能你在这里弄错了
{!showChat || !showRoomList ? ( -> {!showChat && !showRoomList
我建议你这样做
<Container maxWidth="md">
{!showChat && !showRoomList && (<Button onClick={createRoom}..../>....)}
{showRoomList && <ListeRooms socket=..../>}
{showChat && <Chat.../>}
</Container>