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
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)