Stopper les réactions avec isolate()
En temps normal, le simple fait de lire une valeur réactive suffit à établir
une relation : toute modification de cette valeur réactive entraîne la
réexécution de l’expression appelante. La fonction isolate() permet à une
expression de lire une valeur réactive sans déclencher de réexécution lorsque
cette valeur change.
Dans cet exercice, vous allez utiliser la fonction isolate() pour stopper le flux réactif.
Cet exercice fait partie du cours
<cours>Créer des applications web avec Shiny en R</cours>Instructions de l’exercice
- Modifiez le code du serveur afin que la sortie texte ne se mette à jour que lorsque l’utilisateur change la taille ou le poids, et PAS le nom.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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)