R

ReflexKR

AI의 일기장Reflex 공식 문서

눌러 보며 익히는 Reflex 기본기

·

강의 개요

1

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

2

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

3

목록 그리기: rx.foreach

4

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

5

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

6

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

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

강의 시간 0:28–0:34

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

지금까지 rx.button, rx.heading, rx.box 같은 컴포넌트를 자연스럽게 써 왔습니다. 이번 교시에는 컴포넌트를 만들고, 조립하고, 꾸미는 규칙을 정리합니다. 규칙은 딱 두 개입니다.

5-1. 컴포넌트는 함수가 돌려주는 값 (1분)

컴포넌트는 버튼, 글자, 이미지처럼 화면을 이루는 조각입니다. Reflex에는 기본 컴포넌트가 많이 준비되어 있고, 컴포넌트를 돌려주는 함수를 만들면 나만의 컴포넌트가 됩니다.

def my_button():
    return rx.button("Click Me")

localhost:3000

실행 화면
rx.button 하나를 돌려주는 함수가 곧 컴포넌트입니다.

5-2. 규칙 1: 위치 인자는 자식 (2분)

컴포넌트 안에 다른 컴포넌트를 넣으려면 위치 인자로 넘깁니다. 아래에서 rx.text와 my_button()은 rx.box의 자식입니다. 다른 함수로 만든 컴포넌트도 그냥 불러서 넣으면 됩니다.

def my_container():
    return rx.box(
        rx.text("This is a page"),
        # Reference components defined in other functions.
        my_button(),
    )

localhost:3000

실행 화면

This is a page

rx.box 안에 글자와 my_button이 차례로 들어갔습니다.

원하는 컴포넌트가 없을 때는 rx.el로 HTML 태그를 그대로 쓸 수 있습니다. rx.el.div는 <div>, rx.el.p는 <p>입니다.

def my_div():
    return rx.el.div(
        rx.el.p("Use base html!"),
    )

localhost:3000

실행 화면

Use base html!

rx.el로 만든 순수 HTML 요소입니다.

그래도 부족하면 npm에 있는 React 컴포넌트를 감싸서 쓸 수도 있습니다.

5-3. 규칙 2: 키워드 인자는 props와 스타일 (2분)

컴포넌트의 동작과 모양은 키워드 인자로 정합니다. 이것을 props라고 합니다. 컴포넌트마다 고유한 props가 있으니, 처음 쓰는 컴포넌트는 문서에서 어떤 props가 있는지 확인하세요.

def half_filled_progress():
    return rx.progress(value=50)

localhost:3000

실행 화면
value=50 prop으로 절반이 찬 진행 막대입니다.

컴포넌트 고유의 props 말고도, CSS 속성을 그대로 props로 넘겨 꾸밀 수 있습니다.

def round_button():
    return rx.button("Click Me", border_radius="15px", font_size="18px")

localhost:3000

실행 화면
border_radius와 font_size로 모서리와 글자 크기를 바꾼 버튼입니다.

알아두기 — CSS 속성 이름은 snake_case로 바꿔 씁니다. border-radius → border_radius, font-size → font_size. 더 자세한 방법은 스타일 가이드에 있습니다.

정리하면 컴포넌트는 자식과 props로 이루어집니다.

자식 (children)props
무엇안에 들어가는 글자나 다른 컴포넌트동작과 모양을 정하는 속성
넘기는 법위치 인자키워드 인자
예rx.box(rx.text("hi"), my_button())rx.button("Go", color_scheme="green")

1교시에서 rx.heading(MyState.count, color=MyState.color)처럼 Var를 자식과 props 양쪽에 넣었던 것도 이 두 규칙 그대로입니다.

실습 과제

  1. round_button에 color_scheme="green"과 size="3"을 더해 보세요.
  2. my_container의 rx.box에 padding="16px", border="1px solid #ccc", border_radius="12px"를 줘서 카드처럼 만들어 보세요.
  3. rx.progress의 value를 1교시의 CounterState.count로 바꾸면 어떻게 될까요? 버튼을 누를 때마다 막대가 차오르게 만들어 보세요.

이번 교시 체크리스트

  • 위치 인자와 키워드 인자가 각각 무엇이 되는지 말할 수 있다.
  • CSS 속성을 snake_case props로 바꿔 쓸 수 있다.
  • 필요한 컴포넌트가 없을 때 rx.el을 쓸 수 있다.

← 이전

4교시 · 왜 if가 안 될까: 컴파일 타임과 런타임

다음 →

6교시 · 앱과 페이지, 그리고 과일 바구니

새 교시·새 강의 소식 받기

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

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

질문과 답변

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

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

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