eventReactive在闪亮模块中

时间:2019-07-30 07:46:37

标签: r shiny

我想在闪亮的模块中使用eventReactive-function。但是,这不能按预期工作。我的代码有什么问题或必须添加什么?

我已经尝试过观察者,但是我想使用eventReactive,因为我需要返回值。

mod_test_UI <- function(id) {

  ns <- NS(id)

  actionButton(ns("test"), "Test")

}


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

  ns <- session$ns

  observe({
    print(input$test)
  })

  result<- eventReactive(input$test, {
    print("ABC")
  })

}


ui <- tagList(
  mod_test_UI("test-mod")
)

server <- function(input, output, session) {
  callModule(mod_test, "test-mod") 
}

# app
shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:1)

您需要在eventReactive中返回一个值,如下所示:

mod_test_UI <- function(id) {

    ns <- NS(id)

    actionButton(ns("test"), "Test")

}


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

    ns <- session$ns

    observe({
        print(input$test)
    })

    result<- eventReactive(input$test, {
        return("ABC")
    })

    observe({
        print(result())
    })
}


ui <- tagList(
    mod_test_UI("test-mod")
)

server <- function(input, output, session) {
    callModule(mod_test, "test-mod") 
}

# app
shinyApp(ui = ui, server = server)

第二个观察结果只是将result()中现在包含的值打印到屏幕上,以证明其有效。

在这种情况下,return()不是必需的,它可以是如下所示的“ ABC”:

result<- eventReactive(input$test, {
    "ABC"
})