复选框组输入React性

ylamdve6  于 2022-12-25  发布在  React
关注(0)|答案(1)|浏览(126)

如果有人能帮我解决下面代码的行为,我将非常感激。
这是逻辑:仅当选择A+B时,才会显示A1。
如果选择A1,则显示“按钮”。
但当取消选择A和/或B时,只有A1消失,但“按钮”仍可见。
当然,如果取消选择A1,“按钮”将消失...
我知道即使取消选择A和/或B,A1仍处于选中状态。
想知道是否有一个简单的方法来取消选择A1“自动”当A和/或B被取消选择。
如果这是个无关紧要的问题,请提前道歉...

library(shiny)

ui <- fluidPage(

    checkboxGroupInput("choice", 
                       "Choice",
                       choices  = c("A", "B"),
                       selected = NULL), 

    conditionalPanel(
       condition='input.choice.indexOf("A") > -1 &&
                 input.choice.indexOf("B") > -1',
       h5(tags$b("Single checkbox")),
           checkboxInput(inputId = "a1", label = "A1", value = FALSE)), 

     conditionalPanel(
       condition = "input.a1 == 1",
           radioButtons(inputId = "A11", 
                        label = "Buttons",
                        choices = list("Bla" = 2, "Ble" = 3),
                        selected = 2)))

server <- function(input, output, session) {}

shinyApp(ui = ui, server = server)
6kkfgxo0

6kkfgxo01#

使用observe r和updateCheckboxInput可以执行以下操作:

library(shiny)

ui <- fluidPage(
  checkboxGroupInput("choice",
    "Choice",
    choices  = c("A", "B"),
    selected = NULL
  ),
  conditionalPanel(
    condition = 'input.choice.indexOf("A") > -1 &&
                 input.choice.indexOf("B") > -1',
    h5(tags$b("Single checkbox")),
    checkboxInput(inputId = "a1", label = "A1", value = FALSE)
  ),
  conditionalPanel(
    condition = "input.a1 == 1",
    radioButtons(
      inputId = "A11",
      label = "Buttons",
      choices = list("Bla" = 2, "Ble" = 3),
      selected = 2
    )
  )
)

server <- function(input, output, session) {
  observe({
    if (!all(c("A", "B") %in% input$choice)) {
      updateCheckboxInput(inputId = "a1", value = FALSE)
    }
  })
}

shinyApp(ui = ui, server = server)

相关问题