render.express

render.express(
    self
    _fn=None
    *
    inline=False
    container=None
    fill=False
    fillable=False
    **kwargs
)

Reactively render HTML content with output captured as in Shiny Express

This is similar to ui, except that ui uses the return value from the the decorated function, whereas this function works like Shiny Express: as it executes each line of the decorated function, it calls :func:~sys.displayhook() on the result. This has the effect of "capturing" the output of each line.

This decorator can be thought of as a combination of ui (for rendering and sending the dynamic UI to the client), and ~shiny.express.expressify (for capturing the output of each line).

Returns

:

A decorator for a function that returns None.

See Also

Examples

#| standalone: true
#| components: [editor, viewer]
#| layout: vertical
#| viewerHeight: 400

## file: app.py
from shiny import App, render, ui

app_ui = ui.page_fluid(
    ui.input_text("name", "Name", "Socrates"),
    ui.input_text("years", "Years", "470-399 BC"),
    ui.output_ui("person"),
)


def server(input, output, session):

    @render.express
    def person():
        from shiny.express import ui

        with ui.card(class_="mt-3"):
            ui.h3(input.name())
            input.years()


app = App(app_ui, server)