如何使 UI 元素在加载时呈现,但随后依赖于按钮进行进一步更新
Posted
技术标签:
【中文标题】如何使 UI 元素在加载时呈现,但随后依赖于按钮进行进一步更新【英文标题】:How to make a UI element render on load but then dependent on a button for further updates 【发布时间】:2022-01-23 18:27:27 【问题描述】:我正在尝试使 ui 部分反应,因为当应用程序首次加载时,会计算结果,但任何进一步的更新只能通过触发操作按钮来进行。 例如在下面的应用程序中, 应用加载时,input1 的值(4%)乘以 400,结果显示为文本输出。 现在对 input1 的任何进一步更新都不应该更新 textOutput,直到按下更新按钮。 我相信反应式在这里使用是错误的,所以我非常感谢这方面的指导。谢谢
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
fluidRow(
autonumericInput(
inputId = "input1", label = "Percent Input",
value = 4, currencySymbol = " %",currencySymbolPlacement = "s",
digitGroupSeparator = ",",decimalPlaces = 2),
actionButton(inputId = "submit1", label = "Update"),
verbatimTextOutput("resultUI")
)
)
server <- function(input, output)
result<-reactive(
400*input$input1/100
)
output$resultUI <- renderText( result() )
shinyApp(ui = ui, server = server)
【问题讨论】:
【参考方案1】:您可以将eventReactive
与ignoreNULL=FALSE
一起使用,这样它也会在加载时触发:
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
fluidRow(
autonumericInput(
inputId = "input1", label = "Percent Input",
value = 4, currencySymbol = " %",currencySymbolPlacement = "s",
digitGroupSeparator = ",",decimalPlaces = 2),
actionButton(inputId = "submit1", label = "Update"),
verbatimTextOutput("resultUI")
)
)
server <- function(input, output)
result<-eventReactive(input$submit1,
400*input$input1/100
,ignoreNULL = FALSE)
output$resultUI <- renderText( result() )
shinyApp(ui = ui, server = server)
【讨论】:
您好 Waldi,我遵循了您的方法,它非常适用于静态元素,但似乎无法使其适用于动态 ui 元素,例如表格。你能看看这个吗? ***.com/questions/70835628/…以上是关于如何使 UI 元素在加载时呈现,但随后依赖于按钮进行进一步更新的主要内容,如果未能解决你的问题,请参考以下文章
使 conditionalPanel 依赖于使用 fileInput 上传的文件