erlebe ich Schwierigkeiten mit glänzendem Paket in R.Shiny - Probleme mit renderUI() 's Reaktivität
Ich versuche, warum "# Option 1" in server.R zu verstehen, nicht funktioniert, sondern kommentierte: „# Option 2 "funktioniert. Wenn "# Option 1" aktiv ist, versuchen Sie eine zufällige Zeichenfolge einzugeben und drücken Sie die Taste. Beim ersten Mal ersetzt er die Werte in der Textbox durch "abc", aber alle folgenden Male nicht.
In meinem Verständnis ist val() bereits abhängig von Eingabe $ ändern, so muss es jedes Mal erneut ausgeführt werden, wenn die Taste gedrückt wird, außerdem "# Option 2" ist in isolate() gewickelt, so dass es nicht hinzufügen jede Reaktivität.
Es scheint, dass sich der Wert teilweise zu "abc" ändert, wenn "# Option 1" verwendet wird. Wenn Sie das inspect-Element von Google Chrome öffnen, können Sie sehen, dass "# Option 2" die Werte jedes Mal ändert, wenn die Schaltfläche gedrückt wird. "# Option 1" ändert auch den Wert in "abc", aber der Bildschirm wird nur aktualisiert, wenn die Schaltfläche angezeigt wird wird zum ersten Mal gedrückt. Hier
ist der Code:
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(
)
))
Danke! Ich löste das Problem, indem ich ein Leerzeichen am Ende des Texteingabewerts hinzufügte und ein Leerzeichen löschte, wenn der Eingabewert am Ende ein Leerzeichen hatte, so dass sich der neue Wert immer vom vorherigen unterscheidet. Ich trimme trotzdem alle eingehenden Saiten. – user1603038