ComenzarEmpieza gratis

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

Ver curso

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)
Editar y ejecutar código