Kom igångKom igång gratis

Stoppa reaktioner med isolate()

Normalt sett räcker det att läsa ett reaktivt värde för att skapa ett beroende – en förändring av det reaktiva värdet gör att det anropande uttrycket körs om. Funktionen isolate() låter ett uttryck läsa ett reaktivt värde utan att utlösa en omkörning när värdet ändras.

I den här övningen använder du funktionen isolate() för att stoppa det reaktiva flödet.

Den här övningen är en del av kursen

Bygg webbapplikationer med Shiny i R

Visa kurs

Övningsinstruktioner

  • Uppdatera serverkoden så att textutdata bara uppdateras när användaren ändrar längd eller vikt, och INTE namnet.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod