Bắt đầu ngayBắt đầu miễn phí

Dừng phản ứng với isolate()

Thông thường, chỉ cần đọc một giá trị reactive là đủ để thiết lập một mối quan hệ, trong đó bất kỳ thay đổi nào của giá trị reactive sẽ khiến biểu thức gọi được thực thi lại. Hàm isolate() cho phép một biểu thức đọc giá trị reactive mà không kích hoạt việc thực thi lại khi giá trị đó thay đổi.

Trong bài tập này, bạn sẽ dùng hàm isolate() để dừng luồng phản ứng.

Bài tập này là một phần của khóa học

Xây dựng ứng dụng web với Shiny trong R

Xem khóa học

Hướng dẫn bài tập

  • Cập nhật mã server để phần văn bản đầu ra chỉ cập nhật khi người dùng thay đổi chiều cao hoặc cân nặng, và KHÔNG cập nhật khi đổi tên.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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)
Chỉnh sửa và Chạy Mã