Tunda reaksi dengan eventReactive()
Kerangka pemrograman reaktif Shiny dirancang sehingga setiap perubahan pada input secara otomatis memperbarui output yang bergantung padanya. Dalam beberapa situasi, kita mungkin ingin mengendalikan secara eksplisit pemicu yang menyebabkan pembaruan.
Fungsi eventReactive() digunakan untuk menghitung nilai reaktif yang hanya diperbarui sebagai respons terhadap suatu peristiwa tertentu.
rval_x <- eventReactive(input$event, {
# perhitungan
})
Latihan ini merupakan bagian dari kursus
Membangun Aplikasi Web dengan Shiny di R
Instruksi latihan
- Gunakan
eventReactive()untuk menunda eksekusi perhitungan BMI sampai pengguna mengeklik tombol.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
ui <- fluidPage(
titlePanel('BMI Calculator'),
sidebarLayout(
sidebarPanel(
textInput('name', 'Enter your name'),
numericInput('height', 'Enter height (in m)', 1.5, 1, 2, step = 0.1),
numericInput('weight', 'Enter weight (in Kg)', 60, 45, 120),
actionButton("show_bmi", "Show BMI")
),
mainPanel(
textOutput("bmi")
)
)
)
server <- function(input, output, session) {
# MODIFY CODE BELOW: Use eventReactive to delay the execution of the
# calculation until the user clicks on the show_bmi button (Show BMI)
rval_bmi <- reactive({
input$weight/(input$height^2)
})
output$bmi <- renderText({
bmi <- rval_bmi()
paste("Hi", input$name, ". Your BMI is", round(bmi, 1))
})
}
shinyApp(ui = ui, server = server)