Detén reacciones con isolate()
Normalmente, con el simple hecho de leer un valor reactivo basta para crear
una relación en la que un cambio en ese valor reactivo hace que la expresión
que lo llama se vuelva a ejecutar. La función isolate() permite que una expresión
lea un valor reactivo sin provocar una nueva ejecución cuando ese valor cambia.
En este ejercicio, usarás la función isolate() para detener el flujo reactivo.
Este ejercicio forma parte del curso
Creación de aplicaciones web con Shiny en R
Instrucciones del ejercicio
- Actualiza el código del servidor para que la salida de texto se actualice solo cuando el usuario cambie la altura o el peso, y NO el nombre.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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)