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)