insertUI
insertUI(selector, where = c("beforeBegin", "afterBegin", "beforeEnd",
"afterEnd"), ui, multiple = FALSE, immediate = FALSE,
session = getDefaultReactiveDomain())
Arguments
selector | A string that is accepted by jQuery's selector (i.e. the
string s to be placed in a $(s) jQuery call). This selector
will determine the element(s) relative to which you want to insert your
UI object. |
---|---|
where | Where your UI object should go relative to the selector:
|
ui | The UI object you want to insert. This can be anything that
you usually put inside your apps's ui function. If you're inserting
multiple elements in one call, make sure to wrap them in either a
tagList() or a tags$div() (the latter option has the
advantage that you can give it an id to make it easier to
reference or remove it later on). If you want to insert raw html, use
ui = HTML() . |
multiple | In case your selector matches more than one element,
multiple determines whether Shiny should insert the UI object
relative to all matched elements or just relative to the first
matched element (default). |
immediate | Whether the UI object should be immediately inserted into
the app when you call insertUI , or whether Shiny should wait until
all outputs have been updated and all observers have been run (default). |
session | The shiny session within which to call insertUI . |
Description
Insert a UI object into the app.
Details
This function allows you to dynamically add an arbitrarily large UI
object into your app, whenever you want, as many times as you want.
Unlike renderUI
, the UI generated with insertUI
is not updatable as a whole: once it's created, it stays there. Each
new call to insertUI
creates more UI objects, in addition to
the ones already there (all independent from one another). To
update a part of the UI (ex: an input object), you must use the
appropriate render
function or a customized reactive
function. To remove any part of your UI, use removeUI
.
Examples
## Only run this example in interactive R sessions
if (interactive()) {
# Define UI
ui <- fluidPage(
actionButton("add", "Add UI")
)
# Server logic
server <- function(input, output, session) {
observeEvent(input$add, {
insertUI(
selector = "#add",
where = "afterEnd",
ui = textInput(paste0("txt", input$add),
"Insert some text")
)
})
}
# Complete app with UI and server components
shinyApp(ui, server)
}