Reaktionen mit isolate() stoppen
Normalerweise reicht es aus, einen reaktiven Wert zu lesen, um eine Beziehung herzustellen, bei der eine Änderung des reaktiven Werts dazu führt, dass der aufrufende Ausdruck erneut ausgeführt wird. Die Funktion isolate() ermöglicht es einem Ausdruck, einen reaktiven Wert zu lesen, ohne bei einer Wertänderung eine erneute Ausführung auszulösen.
In dieser Übung verwendest du die Funktion isolate(), um den reaktiven Fluss zu stoppen.
Diese Übung ist Teil des Kurses
Webanwendungen mit Shiny in R entwickeln
Anleitung zur Übung
- Aktualisiere den Servercode so, dass die Textausgabe nur aktualisiert wird, wenn die Nutzerin oder der Nutzer die Größe oder das Gewicht ändert – NICHT jedoch den Namen.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
ui <- fluidPage(
titlePanel('BMI Calculator'),
sidebarLayout(
sidebarPanel(
textInput('name', 'Enter your name'),
numericInput('height', 'Enter your height (in m)', 1.5, 1, 2, step = 0.1),
numericInput('weight', 'Enter your weight (in Kg)', 60, 45, 120)
),
mainPanel(
textOutput("bmi")
)
)
)
server <- function(input, output, session) {
rval_bmi <- reactive({
input$weight/(input$height^2)
})
output$bmi <- renderText({
bmi <- rval_bmi()
# MODIFY CODE BELOW:
# Use isolate to stop output from updating when name changes.
paste("Hi", input$name, ". Your BMI is", round(bmi, 1))
})
}
shinyApp(ui = ui, server = server)