materialSwitch在renderUI内不起作用

rryofs0p  于 2023-01-03  发布在  其他
关注(0)|答案(2)|浏览(118)

我想在应用中使用shinyWidgets::materialSwitch而不是复选框来改进UI。
但是,当与renderUI/uiOutput一起使用时,我似乎无法使materialSwitch工作。输入显示正常,但似乎没有注册单击“switch”。
对于我的应用程序的目的-我需要这是在一个renderUI。

软件包版本:

发光小部件_0.7.2
光泽_1.7.2

library(shiny)
library(shinyWidgets)
# library(shinyjs)

ui <- fluidPage(
  div(class="row",
    column(width = 3,
      uiOutput("switch")
    )
  )
)

server <- function(input, output, session) {
  
 output$switch = renderUI({
   materialSwitch(
    inputId = "switch",
    label = "Show Count",
    right = TRUE,
    status = "primary",
    value = FALSE
   )
 })
}

shinyApp(ui = ui, server = server)

为什么会发生这种情况?如何解决这个问题?

k10s72fa

k10s72fa1#

问题是您为uiOutput.outputIdmateriaSwitch.inputId给予相同的名称“switch”。
当他们得到不同的id时,它工作正常:

library(shiny)
library(shinyWidgets)

ui <- fluidPage(
  div(class="row",
      column(width = 3,
             uiOutput("switch"),
             textOutput("result")
      )
  )
)

server <- function(input, output, session) {
  
  output$switch = renderUI({
    materialSwitch(
      inputId = "switchButton",
      label = "Show Count",
      right = TRUE,
      status = "primary",
      value = FALSE
    )
  })
  output$result = renderText(input$switchButton)
}

shinyApp(ui = ui, server = server)
ruoxqz4g

ruoxqz4g2#

下面是它应该如何工作:

library(shiny)
library(shinyWidgets)
# library(shinyjs)

ui <- fluidPage(
  div(style = 'position: absolute;left: 50px; top:100px; width:950px;margin:auto',
      materialSwitch(inputId = "switch",
                     label = "Show Count",
                     right = TRUE,
                     status = "primary",
                     value = FALSE)
  )
)

server <- function(input, output, session) {
  
  output$value1 <- renderText({ input$switch })
  
}

shinyApp(ui = ui, server = server)

相关问题