Как использовать req () с функциями переключения блестящей, чтобы включить / отключить элементы? - PullRequest
0 голосов
/ 24 апреля 2018

Приложение ниже правильно отключит кнопку, если введен хотя бы 1 символ, а затем активирует ее с 6 или более. Кнопка активна, когда символы не заданы, потому что req (input $ some_text) возвращает тихую ошибку.

library(shiny)
library(shinyjs)

ui <- fluidPage(
   useShinyjs(),
     textInput("some_text", "Write at least 5 characters to enable button",
               value = ""),
     actionButton("button", "A Button")
)

server <- function(input, output) {

  first_step <- reactive({
    req(input$some_text)
    stringr::str_count(input$some_text, "[0-9]") > 5
  })

  observe({
    toggleState("button", condition = first_step())
  })
}

Я понимаю, что toggle () не работает, когда нет ввода. В таком случае, следует ли всегда использовать выражение if?

  first_step <- reactive({
    if(input$some_text > 0){
        stringr::str_count(input$some_text, "[0-9]") > 5
    } else FALSE
  })

1 Ответ

0 голосов
/ 24 апреля 2018

Попробуйте, обратите внимание, что я добавил disable в начале

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  textInput("some_text", "Write at least 5 characters (numeric) to enable button",value = ""),
  actionButton("button", "A Button")
)

server <- function(input, output) {

  first_step <- eventReactive(input$some_text,{
    disable("button")
    req(input$some_text)
    stringr::str_count(input$some_text, "[0-9]") >= 5
  })

  observeEvent(first_step(),{
    toggleState("button", condition = first_step())
  })
}

shinyApp(ui,server)

enter image description here

...