R更新文本输入值时出现延迟
下面是一个带有textInput和actionButton的简单R Shining应用程序示例,单击按钮后,应该将文本值设置为NULL并打印NULL值,但是我注意到,在单击submit按钮后,它仍然打印textInput中输入的值。有人能解释一下为什么在更新textInput值时会出现这种延迟吗R更新文本输入值时出现延迟,r,shiny,R,Shiny,下面是一个带有textInput和actionButton的简单R Shining应用程序示例,单击按钮后,应该将文本值设置为NULL并打印NULL值,但是我注意到,在单击submit按钮后,它仍然打印textInput中输入的值。有人能解释一下为什么在更新textInput值时会出现这种延迟吗 library(shiny) ui <- fluidPage( textInput("text", "Test"), actionButt
library(shiny)
ui <- fluidPage(
textInput("text", "Test"),
actionButton("Submit","Submit")
)
server <- function(input, output, session) {
observeEvent(input$Submit,{
updateTextInput(session,"text", value = " ")
print(input$text)
})
}
shinyApp(ui, server)
库(闪亮)
ui此行为的原因是updateTextInput(以及所有更新*输入函数)不会更新服务器函数中的Input
对象。相反,它会向客户端(浏览器)发送一条消息以更改文本输入字段。当浏览器中的文本输入字段更新时,浏览器会向服务器发回一个信号,表明input$text
已更改。但在此之前,observeEvent
块内的代码执行仍在继续,因此当执行print(input$text)
时,值仍然是“hello”。感谢您的回答Bobbel,这解释了更新输入函数的行为,并且有意义。但是,是否可以更新服务器上的文本值,该值将依次显示在浏览器中,以便下一行中的print语句显示来自服务器的更新值。这取决于实际应用程序的复杂程度。一种解决方案是将要打印的信息存储在reactiveValues
对象()中,而不是使用input
。