LoslegenKostenlos loslegen

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

Kurs anzeigen

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)
Code bearbeiten und ausführen