Dostosowanie reaktywności

Studia przypadków: tworzenie aplikacji webowych w Shiny w R

Dean Attali

Shiny Consultant

Przegląd reaktywności

  • reactive() i input$ są reaktywne
  • Kod zależny od zmiennych reaktywnych jest ponownie wykonywany po aktualizacji zależności
  • Dostęp do wartości reaktywnej tworzy zależność
x <- reactive({
    y() * input$num1 * input$num2
})
Studia przypadków: tworzenie aplikacji webowych w Shiny w R

Izolowanie

  • Użyj isolate(), aby nie tworzyć zależności reaktywnej
  • Modyfikacja wartości reaktywnej wewnątrz isolate() nie wywołuje żadnej reakcji
x <- reactive({
    y() * isolate({ input$num1 }) * input$num2
})
x <- reactive({
    y() * isolate({ input$num1 * input$num2 })
})
Studia przypadków: tworzenie aplikacji webowych w Shiny w R

Izolowanie wszystkiego

  • Czasem warto izolować wszystkie elementy reaktywne

    x <- reactive({
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
  • Potrzebny jest sposób na ręczne wyzwolenie ponownego uruchomienia x

Studia przypadków: tworzenie aplikacji webowych w Shiny w R

Przyciski akcji

actionButton(inputId, label, ...)

Zrzut ekranu przycisku akcji

  • Tylko jedna prosta interakcja: kliknięcie
  • Wartość przycisku to liczba kliknięć
# After clicking on a button twice
str(input$button)
int 2
Studia przypadków: tworzenie aplikacji webowych w Shiny w R

Przyciski akcji jako wyzwalacze reaktywności

  • Dostęp do wartości przycisku w serwerze wyzwala reaktywność

  • Dodanie przycisku do UI

    actionButton(inputId = "calculate_x", label = "Calculate x!")
    
  • Dostęp do przycisku jako zależności

    x <- reactive({
        input$calculate_x
    
        isolate({
            y() * input$num1 * input$num2
        })
    })
    
Studia przypadków: tworzenie aplikacji webowych w Shiny w R

Czas na ćwiczenia!

Studia przypadków: tworzenie aplikacji webowych w Shiny w R

Preparing Video For Download...