Inizia subitoInizia gratis

Blocca le reazioni con isolate()

Di norma, il semplice atto di leggere un valore reattivo è sufficiente a creare una relazione, per cui una modifica al valore reattivo farà rieseguire l'espressione chiamante. La funzione isolate() permette a un'espressione di leggere un valore reattivo senza innescare una nuova esecuzione quando quel valore cambia.

In questo esercizio userai la funzione isolate() per interrompere il flusso reattivo.

Questo esercizio fa parte del corso

Creare applicazioni web con Shiny in R

Visualizza corso

Istruzioni dell'esercizio

  • Aggiorna il codice del server in modo che l'output di testo si aggiorni solo quando l'utente modifica l'altezza o il peso, e NON il nome.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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)
Modifica ed esegui il codice