MulaiMulai sekarang secara gratis

Hentikan reaksi dengan isolate()

Biasanya, tindakan sederhana membaca sebuah nilai reaktif sudah cukup untuk membentuk sebuah hubungan, di mana perubahan pada nilai reaktif akan menyebabkan ekspresi pemanggil dijalankan ulang. Fungsi isolate() memungkinkan sebuah ekspresi membaca nilai reaktif tanpa memicu eksekusi ulang ketika nilainya berubah.

Dalam latihan ini, Anda akan menggunakan fungsi isolate() untuk menghentikan aliran reaktif.

Latihan ini adalah bagian dari kursus

Membangun Aplikasi Web dengan Shiny di R

Lihat Kursus

Petunjuk latihan

  • Perbarui kode server sehingga keluaran teks hanya diperbarui ketika pengguna mengubah tinggi atau berat, BUKAN nama.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

ui <- fluidPage(
  titlePanel('BMI Calculator'),
  sidebarLayout(
    sidebarPanel(
      textInput('name', 'Enter your name'),
      numericInput('height', 'Enter your height (in m)', 1.5, 1, 2, step = 0.1),
      numericInput('weight', 'Enter your weight (in Kg)', 60, 45, 120)
    ),
    mainPanel(
      textOutput("bmi")
    )
  )
)

server <- function(input, output, session) {
  rval_bmi <- reactive({
    input$weight/(input$height^2)
  })
  output$bmi <- renderText({
    bmi <- rval_bmi()
    # MODIFY CODE BELOW: 
    # Use isolate to stop output from updating when name changes.
    paste("Hi", input$name, ". Your BMI is", round(bmi, 1))
  })
}

shinyApp(ui = ui, server = server)
Edit dan Jalankan Kode