在以下示例中,文本未在开始时显示。如果我点击“显示” - 按钮,文本出现。如果我然后点击“隐藏” - 按钮,没有其他事情发生了。 事实上,“textis $ visible”变量总是具有正确的值,但我认为observeEvent函数中的if语句只是在第一次单击按钮后计算的。为什么observeEvent不重新评估它的内容?
有没有办法强制observeEvent重新评估if语句?或者还有其他方法可以停止在服务器部分中执行代码并重新启动它(在真实情况下,if语句中会有一大堆函数调用,而不仅仅是隐藏和显示一些文本),而不是仅仅隐藏和显示一些文本。
library(shiny)
ui <- fluidPage(
actionButton(inputId="show","show"),
actionButton(inputId="hide","hide"),
textOutput(outputId = "some_text")
)
server <- function(input, output) {
textis<-reactiveValues(visible=FALSE)
observeEvent(input$show,
textis$visible<-TRUE)
observeEvent(input$hide,
textis$visible<-FALSE)
observeEvent(textis$visible , if(textis$visible){
output$some_text<-renderText({"this is some text"})
})}
shinyApp(ui = ui, server = server)
这种解决了我的问题。但是在真正的应用程序中,我想停止server.R执行它的代码的一部分,并且不显示已经执行的东西,如果某个值变为false。它就像一个注销功能,其他计算机用户不会看到您计算的内容。有没有办法重新启动R会话? –
为重新设置闪亮的应用程序,我发现一个很好的答案: https://stackoverflow.com/questions/25062422/restart-shiny-session –