ho avere difficoltà con il pacchetto lucido in R.Shiny - problemi con renderUI() 's reattività
che sto cercando di capire perché "# Opzione 1" in server.R non funziona, ma ha commentato: "# L'opzione 2 "funziona. Con "# Opzione 1" attiva provare a digitare una stringa casuale e premere il pulsante. La prima volta sostituisce i valori nella casella di testo con "abc", ma non tutte le volte successive.
Nella mia comprensione val() dipende già dall'input $ change, quindi deve essere eseguito nuovamente ogni volta che si preme il pulsante, inoltre "# Option 2" viene inserito in isolate(), quindi non aggiunge qualsiasi reattività.
Sembra che in realtà il valore cambi parzialmente in "abc" quando si utilizza "# Opzione 1". Dopo aver aperto l'elemento di ispezione di Google Chrome, puoi vedere che "Opzione # 2" cambia i valori di ogni volta che viene premuto il pulsante, "# Opzione 1" cambia anche il valore in "abc", ma lo schermo viene aggiornato solo quando il pulsante viene premuto per la prima volta.
Ecco il codice:
server.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(
)
))
Grazie! Ho risolto il problema aggiungendo uno spazio alla fine del valore di input del testo e rimuovendo uno spazio se il valore di input ha uno spazio alla fine, quindi il nuovo valore sarà sempre diverso da quello precedente. Ho comunque tagliato tutte le stringhe in arrivo. – user1603038