시작하기무료로 시작하기

isolate()로 반응 중지하기

일반적으로, reactive 값을 단순히 읽기만 해도 관계가 설정되어, 그 값이 바뀌면 호출한 표현식이 다시 실행돼요. isolate() 함수는 표현식이 reactive 값을 읽더라도, 해당 값이 변경될 때 재실행을 트리거하지 않도록 해 줍니다.

이 연습 문제에서는 isolate() 함수를 사용해 반응 흐름을 멈춰 보겠습니다.

이 연습은 강의의 일부입니다

R로 Shiny 웹 애플리케이션 만들기

강의 보기

연습 안내

  • 서버 코드를 수정해, 텍스트 출력이 이름이 아니라 키나 몸무게가 변경될 때에만 업데이트되도록 하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

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)
코드 편집 및 실행