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
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)