Как автоматически вызвать кнопку действия в R Shiny - PullRequest
0 голосов
/ 11 февраля 2020

Я хочу запускать кнопку действия автоматически, когда пользователи открывают / приземляются на «tab1». Поэтому вместо того, чтобы нажимать кнопку Refre sh для просмотра даты, я бы хотел, чтобы дата печаталась автоматически. Есть ли способ сделать это? Мой настоящий код сложнее, чем этот простой пример. Тем не менее, это демонстрирует, что я хотел бы сделать. Спасибо!

library(shiny)

ui <- fluidPage(
  shiny::tabPanel(value = 'tab1', title = 'Data page',
                  br(),
                  shiny::actionButton("btn", "Refresh!"),
                  br(),
                  shiny::verbatimTextOutput("out")
  )
)

server <- function(input, output, session) {
   curr_date <- shiny::eventReactive(input$btn, {
     format(Sys.Date(), "%c")
   })

   output$out <- shiny::renderText({
     print(curr_date())

   })
}

shinyApp(ui, server)

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Вы можете сделать curr_date реагирующим на вкладку:

library(shiny)

ui <- fluidPage(
  tabsetPanel(
    tabPanel(value = 'tab1', title = 'Data page',
             br(),
             actionButton("btn", "Refresh!"),
             br(),
             verbatimTextOutput("out")
    ),
    tabPanel(value = 'tab2', title = 'Other tab'),
    id = "tabset"
  )
)

server <- function(input, output, session) {
  curr_date <- eventReactive(list(input$btn, input$tabset), {
    req(input$tabset == 'tab1')
    format(Sys.time(), "%c")
  })

  output$out <- renderText({
    print(curr_date())
  })
}

shinyApp(ui, server)
1 голос
/ 11 февраля 2020

Вы должны использовать reactiveValues() и observeEvent() для этого. Функция внутреннего сервера:

server <- function(input, output, session) {

  text_out <- reactiveValues(date = format(Sys.Date(), "%c"))

  observeEvent(input$btn, {
    text_out$date <- "something else"
  })

  output$out <- renderText({
     print(text_out$date)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...