Library

/

Forms

/

Debounce

Reflex is a backend-centric framework, which can create negative performance impacts for apps that need to provide interactive feedback to the user in real time. For example, if a search bar sends a request to the backend on every keystroke, it may result in a laggy UI. This is because the backend is doing a lot of work to process each keystroke, and the frontend is waiting for the backend to respond before updating the UI.

Using the rx.debounce_input component allows the frontend to remain responsive while receiving user input and sends the value to the backend after some delay, on blur, or when Enter is pressed.

"Typically, this component is used to wrap a child rx.input or rx.text_area, however, most child components that accept the value prop and on_change event handler can be used with rx.debounce_input."

This example only sends the final checkbox state to the backend after a 1 second delay.

Unchecked

class DebounceCheckboxState(rx.State):
    checked: bool = False


def debounce_checkbox_example():
    return rx.hstack(
        rx.cond(
            DebounceCheckboxState.checked,
            rx.text("Checked", color="green"),
            rx.text("Unchecked", color="red"),
        ),
        rx.debounce_input(
            rx.chakra.checkbox(
                on_change=DebounceCheckboxState.set_checked,
            ),
            debounce_timeout=1000,
        ),
    )

The DebounceInput component is used to buffer input events on the client side.

It is intended to wrap various form controls and should be used whenever a
fully-controlled input is needed to prevent lost input data when the backend
is experiencing high latency.
PropType | ValuesDefault
min_length
int
debounce_timeout
int
DEFAULT_DEBOUNCE_TIMEOUT
force_notify_by_enter
bool
force_notify_on_blur
bool
value
Union[str, int, float]
input_ref
str
element
Type

Event Triggers

See the full list of default event triggers
TriggerDescription
on_change Fired when the input value changes

Did you find this useful?

Raise an issue

Links

HomeShowcaseBlogChangelog

Join Newsletter

Get the latest updates and news about Reflex.

Copyright © 2024 Pynecone, Inc.