我想定义一个函数,它使用反应输入作为参数调用闪亮函数。对于这个例子:
library(shiny)
ui <- fluidPage(
actionButton("do", "Click Me")
)
server <- function(input, output, session) {
clickFunction<-function(x){
observeEvent(x, {print("got it")})
}
clickFunction(x = input$do)
}
shinyApp(ui, server)
我希望
[1]“得到了它”
当我点击“Click Me”按钮时,却没有输出。
如何让observeEvent观察无功输入?
我认为这可能取决于observeEvent的环境参数,但我没有经验使用它们。
感谢andvance。
答案 0 :(得分:0)
您需要使用反应式包装器传递input$do
。您的示例编码方式,input$do
将在调用函数时进行一次评估。
library(shiny)
clickFunction <- function(x){
observeEvent(x(), {print("got it")})
}
shinyApp(
fluidPage(actionButton("do", "Click Me")),
function(input, output, session){
clickFunction(reactive({input$do}))
}
)
另一种方式是引用您的事件表达式,但input
必须在clickFunction
范围内
library(shiny)
shinyApp(
fluidPage(actionButton("do", "Click Me")),
function(input, output, session){
clickFunction <- function(x){
observeEvent(x, {print("got it")}, event.quoted = TRUE)
}
clickFunction(x = quote(input$do))
}
)