로그인했으면 "환영합니다", 안 했으면 "로그인하세요". 앱은 상태에 따라 다른 화면을 보여줘야 할 때가 많습니다. 이번 교시에는 State 값에 따라 화면을 바꾸는 rx.cond를 씁니다.
class LoginState(rx.State):
logged_in: bool = False
@rx.event
def toggle_login(self):
self.logged_in = not self.logged_in
def show_login():
return rx.box(
rx.cond(
LoginState.logged_in,
rx.heading("Logged In", as_="h2"),
rx.heading("Not Logged In", as_="h2"),
),
rx.button("Toggle Login", on_click=LoginState.toggle_login),
)localhost:3000
직접 눌러 보세요rx.cond는 인자 세 개를 받습니다.
| 순서 | 인자 | 이 예제에서 |
|---|---|---|
| 1 | 조건 (Var) | LoginState.logged_in |
| 2 | 조건이 참일 때 보여줄 컴포넌트 | "Logged In" 제목 |
| 3 | 조건이 거짓일 때 보여줄 컴포넌트 | "Not Logged In" 제목 |
rx.cond(LoginState.logged_in, rx.text("Welcome!"))라고 쓰면 로그인했을 때만 글자가 보이고, 아닐 때는 아무것도 보이지 않습니다.toggle_login은 1교시와 같은 이벤트 핸들러입니다. not으로 참과 거짓을 뒤집습니다.파이썬이라면 이렇게 쓰고 싶어집니다.
def show_login():
if LoginState.logged_in:
return rx.heading("Logged In", as_="h2")
return rx.heading("Not Logged In", as_="h2")이 코드는 동작하지 않습니다. 화면 함수는 앱을 켤 때 딱 한 번 실행되는데, 그때는 아직 사용자가 로그인했는지 알 수 없기 때문입니다. rx.cond는 "나중에 브라우저에서 값을 보고 고르라"는 지시를 화면에 심어 둡니다.
왜 이런 일이 생기는지는 4교시에서 자세히 풉니다. 지금은 "화면 코드에서 State 값으로 갈림길을 만들 때는 rx.cond"만 기억하세요.
show_login에서 버튼 글자도 상태에 따라 "Log In" / "Log Out"으로 바뀌게 해 보세요. 힌트: 버튼의 자식 자리에 rx.cond(...)를 넣습니다.rx.cond는 props 값에도 쓸 수 있습니다. 제목의 color를 로그인했으면 "green", 아니면 "gray"로 바꿔 보세요.rx.cond의 세 인자가 각각 무엇인지 말할 수 있다.if를 쓰면 안 된다는 것을 안다.새 교시·새 강의 소식 받기
이 강의에 새 교시가 더해지거나 이어지는 강의가 열리면 이메일로 알려 드려요.
R
ReflexKR
눌러 보며 배우는 파이썬과 Reflex. 모든 예제는 Reflex 0.10.0에서 직접 실행해 확인했습니다.
ReflexKR은 배너 광고 없이 무료로 운영돼요. 도움이 되셨다면 커피 한 잔으로 응원해 주세요.
© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0
질문과 답변
이 교시에서 궁금한 점을 남겨 주세요. 모든 언어 페이지의 질문이 함께 모입니다.