如何从磁盘加载reactiveValues而不破坏obervers?

wribegjk  于 2023-07-31  发布在  React
关注(0)|答案(1)|浏览(64)

为了将应用程序的状态保存到磁盘,我使用了函数reactiveValuesToList()
当我想从磁盘加载状态时,我使用do.call(reactiveValues, ...),如previous question所示。
但是在那之后observe rs就不能用了。。

可复制示例

library(shiny)
reactiveConsole(T)

r <- reactiveValues()
r$a <- 1
r$b <- 2

observe(cat("State:", r$a, r$b))
#> State: 1 2

savepath <- tempfile()

save_app_state <- function() {
  saveRDS(reactiveValuesToList(r), savepath)
}

load_app_state <- function() {
  state <- readRDS(savepath)
  r <- do.call(reactiveValues, state)
}

save_app_state()

r$b <- 0
#> State: 1 0

load_app_state()

##### EXPECTED #######
#> State: 1 0
## but nothing happens

字符串
创建于2023-07-23,使用reprex v2.0.2

kb5ga3dv

kb5ga3dv1#

您正在创建一个新的reactiveValues对象。执行:

load_app_state <- function() {
  state <- readRDS(savepath)
  r$a <- state$a
  r$b <- state$b
}

字符串

相关问题