R Shiny中observeEvent如何用Or运算符实现任意按钮点击触发事件
问题结论
你当前在observeEvent中直接用|组合两个actionButton输入的写法不可行。
- 原因:
actionButton的返回值是记录点击次数的整数,初始值为0,每次点击自增1。直接用|做逻辑运算只会得到TRUE/FALSE的布尔结果,observeEvent无法识别后续相同布尔值下的点击增量,会出现触发逻辑异常。
正确实现方案
observeEvent原生支持同时监听多个反应源,只需要把所有需要监听的按钮输入用c()包裹作为监听条件即可,任意一个按钮被点击都会触发绑定的事件。
修正后的可运行代码:
library(shiny) ui <- fluidPage( actionButton("act1", "Action1"), actionButton("act2", "Action2"), htmlOutput("gh") ) server <- function(input, output, session) { # 用c()组合多个监听对象,任意一个更新都会触发事件 observeEvent(c(input$act1, input$act2),{ output$gh <- renderUI({ "Clicked" }) }) } shinyApp(ui, server)
补充说明:如果需要区分是哪个按钮触发了事件,可以在observeEvent内部判断
input$act1和input$act2的当前值,匹配最新点击的按钮即可。
内容的提问来源于stack exchange,提问作者manu p
相关产品推荐
相关产品推荐

