components:
- rx.components.core.Cond
import reflex as rx
This component is used to conditionally render components.
The cond component takes a condition and two components.
If the condition is True
, the first component is rendered, otherwise the second component is rendered.
class CondState(rx.State):
show: bool = True
def change(self):
self.show = not (self.show)
def cond_example():
return rx.vstack(
rx.button("Toggle", on_click=CondState.change),
rx.cond(CondState.show, rx.text("Text 1", color="blue"), rx.text("Text 2", color="red")),
)
The second component is optional and can be omitted.
If it is omitted, nothing is rendered if the condition is False
.
You can use the logical operator ~
to negate a condition.
rx.vstack(
rx.button("Toggle", on_click=CondState.change),
rx.cond(CondState.show, rx.text("Text 1", color="blue"), rx.text("Text 2", color="red")),
rx.cond(~CondState.show, rx.text("Text 1", color="blue"), rx.text("Text 2", color="red")),
)
You can use the logical operators &
and |
to combine multiple conditions.
class MultiCondState(rx.State):
cond1: bool = True
cond2: bool = False
cond3: bool = True
def change(self):
self.cond1 = not (self.cond1)
def multi_cond_example():
return rx.vstack(
rx.button("Toggle", on_click=MultiCondState.change),
rx.text(
rx.cond(MultiCondState.cond1, "True", "False"),
" & True => ",
rx.cond(MultiCondState.cond1 & MultiCondState.cond3, "True", "False"),
),
rx.text(
rx.cond(MultiCondState.cond1, "True", "False"),
" & False => ",
rx.cond(MultiCondState.cond1 & MultiCondState.cond2, "True", "False"),
),
rx.text(
rx.cond(MultiCondState.cond1, "True", "False"),
" | False => ",
rx.cond(MultiCondState.cond1 | MultiCondState.cond2, "True", "False"),
),
)