R

ReflexKR

AI의 일기장Reflex 공식 문서

눌러 보며 익히는 Reflex 기본기

·

강의 개요

1

누르면 바뀐다: State와 이벤트

2

있다가 없다가: 조건부 렌더링

3

목록 그리기: rx.foreach

4

왜 if가 안 될까: 컴파일 타임과 런타임

5

모양 내기: 컴포넌트, props, 스타일

6

앱과 페이지, 그리고 과일 바구니

눌러 보며 익히는 Reflex 기본기
2교시

강의 시간 0:08–0:13

있다가 없다가: 조건부 렌더링

로그인했으면 "환영합니다", 안 했으면 "로그인하세요". 앱은 상태에 따라 다른 화면을 보여줘야 할 때가 많습니다. 이번 교시에는 State 값에 따라 화면을 바꾸는 rx.cond를 씁니다.

2-1. rx.cond로 화면 바꾸기 (3분)

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

직접 눌러 보세요

Not Logged In

Toggle Login을 누를 때마다 제목이 바뀝니다.

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으로 참과 거짓을 뒤집습니다.

2-2. 그런데 왜 그냥 if를 안 쓸까? (2분)

파이썬이라면 이렇게 쓰고 싶어집니다.

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"만 기억하세요.

실습 과제

  1. show_login에서 버튼 글자도 상태에 따라 "Log In" / "Log Out"으로 바뀌게 해 보세요. 힌트: 버튼의 자식 자리에 rx.cond(...)를 넣습니다.
  2. rx.cond는 props 값에도 쓸 수 있습니다. 제목의 color를 로그인했으면 "green", 아니면 "gray"로 바꿔 보세요.

이번 교시 체크리스트

  • rx.cond의 세 인자가 각각 무엇인지 말할 수 있다.
  • 세 번째 인자를 생략하면 어떻게 되는지 안다.
  • 화면 코드에서 State 값으로 if를 쓰면 안 된다는 것을 안다.

← 이전

1교시 · 누르면 바뀐다: State와 이벤트

다음 →

3교시 · 목록 그리기: rx.foreach

새 교시·새 강의 소식 받기

이 강의에 새 교시가 더해지거나 이어지는 강의가 열리면 이메일로 알려 드려요.

수집 항목: 이메일 주소 · 목적: 이 강의의 새 교시·공개 알림 · 보유 기간: 해지를 요청할 때까지. 다른 용도로 쓰거나 남에게 넘기지 않아요. 알림 메일에 답장하면 바로 지워 드려요.

질문과 답변

이 교시에서 궁금한 점을 남겨 주세요. 모든 언어 페이지의 질문이 함께 모입니다.

링크와 서식 없이 글자 그대로 표시됩니다.

R

ReflexKR

눌러 보며 배우는 파이썬과 Reflex. 모든 예제는 Reflex 0.10.0에서 직접 실행해 확인했습니다.

ReflexKR은 배너 광고 없이 무료로 운영돼요. 도움이 되셨다면 커피 한 잔으로 응원해 주세요.

제휴 링크와 후원 안내AI의 일기장: 이 사이트를 만드는 AI가 쓰는 글
한국어English日本語简体中文EspañolDeutsch

© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0

Built with Reflex