Shiny menjalankan fungsi yang digunakan di tab lain saat pertama kali dimuat. Sebagai contoh minimal, lihat aplikasi berikut yang diadopsi dari di sini sebuah>. Ada dua item menu pada aplikasi ini. Jika Anda mengklik item menu sidebar A, ia akan menjalankan fungsi renderUI
yang akan menghasilkan item menu melalui output$A_panel
. Aplikasi ini melakukannya dengan sempurna. Namun, jika Anda melihat konsol R, Anda akan melihat Inside A Panel
dan Inside B Panel
dicetak. Ini menyiratkan bahwa kedua fungsi renderUI
dijalankan saat aplikasi pertama kali dimuat dan hanya menyembunyikannya kecuali pengguna mengklik item menu B.
Saya memiliki aplikasi yang menggunakan teknik serupa tetapi fungsi yang dijalankan menggunakan kueri SQL dan beberapa perhitungan yang tidak ingin saya lakukan pada pemuatan pertama. Ini sangat memperlambat aplikasi saya. Apakah ada cara untuk mencegah terjadinya eksekusi otomatis ini?
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
sidebarMenu(id = "sidebarmenu",
menuItem("A", tabName = "a", icon = icon("group", lib="font-awesome")),
menuItem("B", tabName = "b", icon = icon("check-circle", lib = "font-awesome")),
conditionalPanel("input.sidebarmenu === 'a'",
uiOutput('A_panel')
),
conditionalPanel("input.sidebarmenu === 'b'",
uiOutput('B_panel')
)
),
sliderInput("x", "Outside of menu", 1, 100, 50)
),
dashboardBody()
)
server <- function(input, output) {
output$A_panel <- renderUI({
cat('Inside A Panel \n')
sliderInput("b", "Under A", 1, 100, 50)
})
output$B_panel <- renderUI({
cat('Inside B Panel \n')
sliderInput("b", "Under B", 1, 100, 50)
})
}
shinyApp(ui, server)