getReactableState() gets the state of a reactable instance within a Shiny application.

getReactableState(outputId, name = NULL, session = NULL)

Arguments

outputId

The Shiny output ID of the reactable instance.

name

Name of a state value to get. One of "page", "pageSize", "pages", or "selected". If unspecified, all values will be returned in a named list.

session

The Shiny session object. Defaults to the current Shiny session.

Value

If name is specified, one of the following values:

  • page: the current page

  • pageSize: the page size

  • pages: the number of pages

  • selected: the selected rows - a numeric vector of row indices, or NULL if no rows are selected

If name is unspecified, getReactableState() returns a named list containing all values. If the table has not been rendered yet, getReactableState() returns NULL.

Examples

# Run in an interactive R session
if (interactive()) {

library(shiny)
library(reactable)

ui <- fluidPage(
  actionButton("prev_page_btn", "Previous page"),
  actionButton("next_page_btn", "Next page"),
  reactableOutput("table"),
  verbatimTextOutput("table_state")
)

server <- function(input, output) {
  output$table <- renderReactable({
    reactable(
      iris,
      showPageSizeOptions = TRUE,
      selection = "multiple"
    )
  })

  output$table_state <- renderPrint({
    state <- req(getReactableState("table"))
    print(state)
  })

  observeEvent(input$prev_page_btn, {
    # Change to the previous page
    page <- getReactableState("table", "page")
    if (page > 1) {
      updateReactable("table", page = page - 1)
    }
  })

  observeEvent(input$next_page_btn, {
    # Change to the next page
    state <- getReactableState("table")
    if (state$page < state$pages) {
      updateReactable("table", page = state$page + 1)
    }
  })
}

shinyApp(ui, server)
}