Тонкая настройка реактивности

Примеры использования: создание веб-приложений с Shiny в R

Dean Attali

Shiny Consultant

Повторение: реактивность

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

Isolate

  • Используйте isolate(), чтобы не создавать реактивную зависимость
  • Если реактивное значение внутри isolate() изменяется, ничего не происходит
x <- reactive({
    y() * isolate({ input$num1 }) * input$num2
})
x <- reactive({
    y() * isolate({ input$num1 * input$num2 })
})
Примеры использования: создание веб-приложений с Shiny в R

Изолировать всё

  • Иногда нужно изолировать все реактивные выражения

    x <- reactive({
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
  • Нужен способ принудительно запустить x по требованию

Примеры использования: создание веб-приложений с Shiny в R

Кнопки действий

actionButton(inputId, label, ...)

chapter4_4_fine_tune_the_activity.025.png

  • Одно простое действие: нажатие
  • Значение кнопки — количество нажатий
# After clicking on a button twice
str(input$button)
int 2
Примеры использования: создание веб-приложений с Shiny в R

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

  • Обращение к значению кнопки в сервере запускает реактивность

  • Добавьте кнопку в UI

    actionButton(inputId = "calculate_x", label = "Calculate x!")
    
  • Обратитесь к кнопке, чтобы сделать её зависимостью

    x <- reactive({
        input$calculate_x
    
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
Примеры использования: создание веб-приложений с Shiny в R

Давайте потренируемся!

Примеры использования: создание веб-приложений с Shiny в R

Preparing Video For Download...