Точно налаштуйте реактивність

Case Studies: створення вебзастосунків із Shiny в R

Dean Attali

Shiny Consultant

Огляд реактивності

  • reactive() і input$ є реактивними
  • Код, що залежить від реактивних змінних, перезапускається після оновлення залежностей
  • Доступ до реактивного значення робить його залежністю
x <- reactive({
    y() * input$num1 * input$num2
})
Case Studies: створення вебзастосунків із Shiny в R

Isolate

  • Використовуйте isolate(), щоб не створювати реактивну залежність
  • Якщо реактивне значення всередині isolate() змінюється, нічого не відбувається
x <- reactive({
    y() * isolate({ input$num1 }) * input$num2
})
x <- reactive({
    y() * isolate({ input$num1 * input$num2 })
})
Case Studies: створення вебзастосунків із Shiny в R

Ізолюйте все

  • Іноді потрібно ізолювати всі реактиви

    x <- reactive({
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
  • Потрібен спосіб запускати x за запитом

Case Studies: створення вебзастосунків із Shiny в R

Кнопки дій

actionButton(inputId, label, ...)

chapter4_4_fine_tune_the_activity.025.png

  • Лише одна проста взаємодія: клік
  • Значення кнопки — кількість кліків
# Після двох кліків по кнопці
str(input$button)
int 2
Case Studies: створення вебзастосунків із Shiny в R

Кнопки дій як тригери реактивності

  • Доступ до значення кнопки в сервері запускає реактивність

  • Додайте кнопку в UI

    actionButton(inputId = "calculate_x", label = "Calculate x!")
    
  • Зверніться до кнопки, щоб зробити її залежністю

    x <- reactive({
        input$calculate_x
    
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
Case Studies: створення вебзастосунків із Shiny в R

Давайте потренуємось!

Case Studies: створення вебзастосунків із Shiny в R

Preparing Video For Download...