mam trudności z pakietu Błyszczące w R.Błyszczące - problemy z renderUI() 's reaktywności
Próbuję zrozumieć, dlaczego «# Opcja 1» w server.R nie działa, ale powiedział: „# Opcja 2 "działa. Gdy aktywny jest "# Option 1", spróbuj wpisać losowy ciąg znaków i nacisnąć przycisk. Pierwszy raz zastępuje wartości w polu tekstowym przez "abc", ale wszystkie następne czasy nie.
W moim rozumieniu val() jest już zależny od wejścia $ change, więc musi być ponownie uruchamiany za każdym naciśnięciem przycisku, ponadto "# Option 2" jest zawijany do isolate(), więc nie dodaje dowolna reaktywność.
Wygląda na to, że w rzeczywistości wartość częściowo zmienia się na "abc", gdy używana jest "# opcja 1". Po otwarciu elementu inspekcji Google Chrome widać, że "# Option 2" zmienia wartości za każdym naciśnięciem przycisku, "# Option 1" również zmienia wartość na "abc", ale ekran jest aktualizowany tylko wtedy, gdy przycisk jest wciśnięty po raz pierwszy.
Oto kod:
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(
)
))
Dzięki! Rozwiązałem problem, dodając spację na końcu wartości wejściowej tekstu i usuwając spację, jeśli wartość wejściowa ma spację na końcu, więc nowa wartość będzie zawsze inna niż poprzednia. W każdym razie przycinam cały przychodzący ciąg. – user1603038