Validasi Input dengan req() dan validate()
Penjelasan
Saat aplikasi pertama kali dimuat, atau saat user mengosongkan sebuah input, nilai input bisa jadi NULL atau string kosong — kalau langsung dipakai di komputasi, ini sering memicu error yang membingungkan. req(input$x) adalah cara singkat untuk 'berhenti diam-diam' (tanpa menampilkan error merah) kalau input$x kosong/NULL/FALSE, sangat berguna di awal blok reactive(). Untuk menampilkan pesan error yang ramah ke user (bukan diam-diam berhenti), pakai validate(need(kondisi, "pesan error")) — pesan ini akan muncul menggantikan output, memberi tahu user apa yang salah.
Contoh Konsep
library(shiny)
ui <- fluidPage(
numericInput("pembagi", "Angka pembagi:", value = NULL),
textOutput("hasil_bagi")
)
server <- function(input, output) {
output$hasil_bagi <- renderText({
req(input$pembagi)
validate(
need(input$pembagi != 0, "Pembagi tidak boleh nol!")
)
paste("100 dibagi", input$pembagi, "=", 100 / input$pembagi)
})
}
shinyApp(ui = ui, server = server)
Praktikum
Lengkapi validasi agar menampilkan pesan 'Nama wajib diisi' kalau input 'nama' kosong.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Gunakan req() untuk kondisi yang wajar terjadi (misalnya input belum diisi saat load pertama), dan validate()+need() untuk kondisi yang perlu penjelasan ke user, seperti input yang salah format.