我想使用bsModal
包含通过renderUI
. 输入取决于我的数据,但在启动后不会改变。打开模式时,我想更新输入的选定值。问题是,在我的最小可重现示例中,第一次更新出错,因为模态内的输入尚未呈现。从第二次更新开始一切正常。
这是示例:
library(shiny)
library(shinyBS)
ui <- fluidPage(
titlePanel("Modal Update Problem"),
actionButton(inputId = "btn_test", label = "Click Me"),
bsModal("modal_test", "Test Modal", "btn_test", size = "large",
uiOutput("test_ui")
)
)
server <- function(input, output, session) {
observeEvent(input$btn_test, {
updateSelectInput(
session = session,
inputId = "test_select",
selected = "B"
)
})
output$test_ui <- renderUI({
selectInput(
inputId = "test_select",
label = "Test",
choices = c("A", "B", "C"),
selected = "A"
)
})
}
# Run the application
shinyApp(ui = ui, server = server)
预期行为:每次单击按钮时,模式内的 Select-Input 都会显示“B”。当前行为:第一次单击后显示“A”(即初始值),第二次单击后显示“B”。
是否有一个干净的解决方案来做到这一点,或者至少有一个解决方法?如何在启动时在模式内呈现 UI?