selectInput, добавленный с помощью insertUI, не обновляет реактивные данные - PullRequest
0 голосов
/ 31 марта 2020

Я видел несколько предыдущих вопросов, которые могут обернуться вокруг этой проблемы, но я не смог найти четкого ответа на этот вопрос.

Моя проблема в том, что элемент пользовательского интерфейса, добавленный с помощью insertUI, который зависит от реактивного значения , не обновляется.

В приведенном ниже примере, если добавить новую selectInput с помощью кнопки, а затем изменить пол, выбор будет обновлен только в первой selectInput.

. вопрос: есть ли "официальный" способ сделать это selectInput реактивным? Я могу представить некоторые обходные пути, но они не идеальны.

server.R

library(shiny)
library(tidyverse)

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

  data <- reactive({
    req(input$genderSelection)
    starwars %>% 
      filter(gender == input$genderSelection)
  })

  output$characterSelection1 <- renderUI({
    selectInput(
      "char1",
      "Character 1",
      choices = data() %>% 
        .$name
    )
  })

  observeEvent(
      input$btn,
      {
          insertUI(
              selector = "#selection2",
              where = "beforeEnd",
              ui = selectInput(
                  "char2",
                  "Character 2",
                  choices = data() %>%
                      .$name
              )
          )
      }
  )
}

ui.R

ui <- fluidPage(
  radioButtons(
    "genderSelection",
    "Gender",
    choices = c("male", "female")
  ),
  uiOutput("characterSelection1"),
  tags$div(
    id = "selection2",
    actionButton("btn", "Add selection")
  )
)
...