Tinh chỉnh tính phản ứng

Nghiên cứu tình huống: Xây dựng ứng dụng web với Shiny trong R

Dean Attali

Shiny Consultant

Ôn lại tính phản ứng

  • reactive()input$ là phản ứng
  • Mã phụ thuộc biến phản ứng sẽ chạy lại khi phụ thuộc thay đổi
  • Truy cập giá trị phản ứng sẽ tạo phụ thuộc
x <- reactive({
    y() * input$num1 * input$num2
})
Nghiên cứu tình huống: Xây dựng ứng dụng web với Shiny trong R

Isolate

  • Dùng isolate() để không tạo phụ thuộc phản ứng
  • Nếu giá trị phản ứng trong isolate() đổi, sẽ không có gì xảy ra
x <- reactive({
    y() * isolate({ input$num1 }) * input$num2
})
x <- reactive({
    y() * isolate({ input$num1 * input$num2 })
})
Nghiên cứu tình huống: Xây dựng ứng dụng web với Shiny trong R

Cô lập tất cả

  • Đôi khi cần cô lập mọi biến phản ứng

    x <- reactive({
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
  • Cần cách kích hoạt x chạy lại theo yêu cầu

Nghiên cứu tình huống: Xây dựng ứng dụng web với Shiny trong R

Nút hành động

actionButton(inputId, label, ...)

chapter4_4_fine_tune_the_activity.025.png

  • Chỉ một tương tác: nhấp chuột
  • Giá trị nút là số lần đã nhấp
# Sau khi nhấp nút hai lần
str(input$button)
int 2
Nghiên cứu tình huống: Xây dựng ứng dụng web với Shiny trong R

Dùng nút làm kích hoạt phản ứng

  • Truy cập giá trị input của nút trong server sẽ kích hoạt phản ứng

  • Thêm nút vào UI

    actionButton(inputId = "calculate_x", label = "Calculate x!")
    
  • Truy cập nút để tạo phụ thuộc

    x <- reactive({
        input$calculate_x
    
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
Nghiên cứu tình huống: Xây dựng ứng dụng web với Shiny trong R

Ayo berlatih!

Nghiên cứu tình huống: Xây dựng ứng dụng web với Shiny trong R

Preparing Video For Download...