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

Type Description
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)