闪亮:观察全局变量的变化

问题描述 投票:-1回答:1

我正在制作一个非常简单的Shiny游戏。基本上每个玩家都在他们自己的会话中玩,但他们共享1个全局变量来跟踪每个玩家的得分。

我认为我正在成功更新全局'得分'变量,但是对于某些(可能是愚蠢的)原因,我无法将全局变量作为反应值(即自动触发updateActionButton)。下面的最小代码:

工作实例:

score <- c(100) 

ui <- fluidPage(
  titlePanel("Hello Shiny!"),
  mainPanel(
    actionButton("increase_score", label = " increase score player 1 "),
    verbatimTextOutput("show_score_p1")
  )
)

# Server logic
server <- function(input, output){
  observeEvent(input$increase_score,{
    score[1] <- score[1]+10
  })
  output$show_score_p1 <- renderText({paste(score[1])})  
}

shinyApp(ui,server)

我尝试了几种方法来尝试让我的全局“得分”被反应,即makeReactiveBinding(得分),但无济于事。有任何想法吗?绝对感觉我错过了一些非常明显的东西

r scope shiny global shiny-reactivity
1个回答
0
投票

使用可以使用一个名为reactiveValues的有用功能

library(shiny)
ui <- fluidPage(
  titlePanel("Hello Shiny!"),
  mainPanel(
    actionButton("increase_score", label = " increase score player 1 "),
    verbatimTextOutput("show_score_p1")
  )
)

score<-reactiveValues(a=100)
# Server logic
server <- function(input, output){

  observeEvent(input$increase_score,{
    score$a <- score$a+10
  })
  output$show_score_p1 <- renderText({
    score$a
  })  
}

shinyApp(ui,server)
© www.soinside.com 2019 - 2024. All rights reserved.