【问题标题】:Handling clicks of multiple actionButtons in a shiny app在闪亮的应用程序中处理多个操作按钮的点击
【发布时间】:2023-04-09 03:02:01
【问题描述】:

如果我的闪亮应用中有多个动态生成的动作按钮,有没有办法知道点击了哪个动作按钮并使用点击的按钮的 ID 执行一些计算?

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    我遇到了类似的问题,尽管在我的情况下按钮不是动态生成的。从问题中不清楚是否强调“动态生成”方面。如果是这样,我的回答对您没有多大帮助...

    为了简化我的答案,我将问题简化为以下内容:

    • 我的 UI 中有两个 actionButtonsid="increase"id="decrease"),我有一个整数变量(var)和文本输出(id="actual_value")来显示实际值。其中一个按钮应该增加一个值,另一个应该减少它,显然输出应该显示更新后的值。

    解决办法是:

        shinyServer(function(input, output, session) {
             increase <- reactive({
                if( input$increase == 0 ) return(  )
                var <- var + 1
              })
    
              decrease <- reactive({
                if( input$decrease  == 0 ) return(  )
                var <- var - 1
              })
    
              actual.value <- reactive({
                increase()
                decrease()
                var
              })
    
              output$actual_value <- renderText({
                paste("Actual value is: ", actual.value() )
              })
        })
    

    所以解释是有两个反应输入(即按钮)和两个相应的反应表达式(increasedecrease)。第三个反应式表达式 (actual.value) 取决于前两个并返回 var 的实际值。无功输出取决于此。

    因此,您为两个按钮(increasedecrease)创建了两个独立的反应式表达式,然后在第三个按钮(actual.value)中复用它们。

    这可行,但是我不知道这是否是解决此类问题的最佳方法。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2019-05-02
      • 1970-01-01
      • 2017-12-12
      • 2020-05-21
      • 2016-02-09
      • 2020-12-28
      • 2020-09-05
      • 1970-01-01
      相关资源
      最近更新 更多