Study
Shiny

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.

Editor Latihan

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.