Reactivity Fundamentals
Penjelasan
Inti kekuatan Shiny ada di reactivity: setiap kali user mengubah nilai input widget (misalnya menggeser slider), Shiny otomatis mendeteksi output mana saja yang bergantung pada input$slider tersebut, lalu menjalankan ulang HANYA blok render yang relevan — bukan seluruh aplikasi. Ini disebut 'reactive graph'. input$x hanya bisa dibaca di dalam konteks reaktif (seperti di dalam render*() atau reactive()), bukan sembarangan di luar fungsi server. Konsep ini berbeda total dari pemrograman R biasa yang berjalan baris demi baris secara imperatif — di Shiny, kamu mendeklarasikan hubungan ketergantungan, dan Shiny yang mengurus kapan kode itu dijalankan ulang.
Contoh Konsep
library(shiny)
ui <- fluidPage(
sliderInput("n", "Jumlah data:", 1, 100, 10),
textOutput("ringkasan")
)
server <- function(input, output) {
# Setiap kali input$n berubah, blok ini otomatis dijalankan ulang
output$ringkasan <- renderText({
data <- rnorm(input$n)
paste("Rata-rata dari", input$n, "data acak:", round(mean(data), 2))
})
}
shinyApp(ui = ui, server = server)
Praktikum
Lengkapi output agar menampilkan status ganjil/genap dari input 'angka' setiap kali nilainya berubah.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Kalau kamu coba membaca input$x di luar reactive context (misalnya langsung di badan fungsi server, bukan di dalam render*() atau observe()), Shiny akan melempar error — reactivity hanya berlaku di dalam konteks yang tepat.