首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么没有在服务器函数中初始化每个会话的反应性值?

为什么没有在服务器函数中初始化每个会话的反应性值?
EN

Stack Overflow用户
提问于 2019-02-06 14:04:09
回答 1查看 66关注 0票数 0

我正在将我的应用程序部署到shinyapp中,当我打开多个窗口时,我注意到了一些奇怪的行为。我已经呈现了一个datatable,当我更新窗口上的筛选器时,我的表只更新了最后一个打开的窗口。

在阅读了作用域文档之后,我已经将我的反应性值移到了服务器函数中。

app.R

代码语言:javascript
复制
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

代码语言:javascript
复制
#table is a data.frame loaded globally outside of the ui and server functions.
riskData <- reactiveValues(data = table_csv) 

我认为在服务器函数中加载我的反应性值意味着每个会话都有自己的反应性值?我希望能够在不同的会议上独立地过滤一张桌子。

EN

Stack Overflow用户

回答已采纳

发布于 2019-02-06 18:14:54

你需要做两件事

1)在源调用期间设置local=T

代码语言:javascript
复制
source("helpers/load_data.R", local=T)
source("helpers/load_session_data.R", local=T)

“如果您使用的默认值是local = FALSE,那么该文件将来源于全局环境。”

来源

2)将源调用置于服务器功能下,否则即使启用local=T,调用也将跨会话共享

代码语言:javascript
复制
server <- function(input, output, session) {
source("helpers/load_data.R", local=T)
source("helpers/load_session_data.R", local=
...
}

在闪闪发亮的文档中是个很好的例子。(代码可以找到这里)

该文件中的对象在同一个R#进程源(‘all _sessions.R,local = TRUE)服务器<- function (输入、输出、会话){#对象在每个会话源(’each _session.R‘,local = TRUE)中定义的所有会话之间共享,输出$renderText <- (该文件中的{#对象每次调用该函数时定义该函数(’each _call.R‘,local = TRUE) #. })

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54555460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档