showcase - Brillante-problemas con la reactividad de renderUI()
shiny server (2)
Parece que podría haber un error escondido en alguna parte, pero no puedo rastrearlo.
La buena noticia es que creo que deberías poder lograr este efecto con la función updateTextInput
.
Para una mirada más profunda al problema, he creado un error para esto, sin embargo. https://github.com/rstudio/shiny/issues/181 . Intentaré actualizar esta publicación si / cuando descubramos qué está pasando.
Experimento dificultades con el paquete Shiny en R.
Estoy tratando de entender por qué "# Opción 1" en el servidor.R no funciona, pero el comentario "# Opción 2" funciona. Con la "# Opción 1" activa, intente escribir cadena aleatoria y presionar el botón. La primera vez reemplaza los valores en el cuadro de texto con "abc", pero las siguientes veces no.
En mi entender, val () ya depende de input $ change, por lo que debe volver a ejecutarse cada vez que se presiona el botón, además "# Option 2" se envuelve en isolate (), por lo que no agrega ninguna reactividad.
Parece que en realidad el valor cambia parcialmente a "abc" cuando se usa "# Option 1". Con el elemento de inspección de Google Chrome abierto, puede ver que "# Opción 2" cambia los valores de cada vez que se presiona el botón, "# Opción 1" también cambia el valor a "abc", pero la pantalla se actualiza solo cuando el botón se presiona por primera vez.
Aquí está el código:
servidor.R
require(shiny)
shinyServer(function(input, output) {
val <- reactive({
if(input$change>0) {
# Option 1
''abc''
# # Option 2
# isolate({
# paste(''abc'',input$txt,"")
# })
} else {
''''
}
})
output$textbox <- renderUI({
textInput("txt","Text",val())
})
})
ui.R
require(shiny)
require(shinyIncubator)
shinyUI(pageWithSidebar(
headerPanel(''Test''),
sidebarPanel(
uiOutput("textbox"),
actionButton("change", "Change")
),
mainPanel(
)
))
Vea mi respuesta aquí:
https://groups.google.com/d/msg/shiny-discuss/PLHauRlFw3k/AnoD7NusvDIJ
Lo esencial es que el servidor sigue enviando exactamente el mismo valor a la salida del textbox
, por lo que el cliente es lo suficientemente "inteligente" como para ignorarlo.