アプリを Shinyapps にデプロイしていますが、複数のウィンドウを開いていると奇妙な動作に気づきました。データテーブルをレンダリングしました。ウィンドウのフィルターを更新すると、最後に開いたウィンドウでのみテーブルが更新されます。
スコーピングのドキュメントを読んだ後、リアクティブ値をサーバー関数にロードするように移動しました。
app.R
source("helpers/load_data.R")
server <- function(input, output, session) {
source("helpers/load_session_data.R")
output$risk_table <- renderDataTable({
DT::datatable(riskData$data
rownames = FALSE)
})
observeEvent(input$get_filtered_data, {
# UpdateTable function takes my table_csv and filters by the date, and updates the riskData reactive value
UpdateTable(table, input$date)
}
UpdateTable <- function(table, date) {
#... filter stuff
riskData$data <- filtered_table
}
}
load_session_data.R
#table is a data.frame loaded globally outside of the ui and server functions.
riskData <- reactiveValues(data = table_csv)
サーバー関数にリアクティブ値をロードすると、各セッションが独自のリアクティブ値を持つことになると思いましたか? 異なるセッションでテーブルを個別にフィルタリングできるようにしたいと考えています。