更改来自服务器的闪亮输入值

Rol*_*ayo 13 r shiny

我有一个带有 的操作按钮id=do,当单击操作按钮时,我希望更改名为 rhm_clic 的输入值。我现在有这个。

 observeEvent(input$do,{
   input$rhm_clic<-NULL
 })
Run Code Online (Sandbox Code Playgroud)

jam*_*121 12

有一个使用 JS 的替代方案,我发现它在某些情况下非常有用。这使您不必使用这些update***input功能。此外,输入甚至不需要事先定义。

library(shiny)

ui <- fluidPage(
  tags$script("
    Shiny.addCustomMessageHandler('rhm_clic', function(value) {
    Shiny.setInputValue('rhm_clic', value);
    });
  ")

# additional UI code
)

server <- function(input, output, session) {
  observeEvent(input$do, {
    session$sendCustomMessage("rhm_clic", 'null')
  })
# Additional server code
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

这是 Joe Cheng 撰写的一篇好文章,阐述了如何使用这个框架。


小智 0

您无法通过这种方式更改闪亮创建的输入的值。对于input$要更改的变量,需要通过实际输入过程(例如inputText()或 )进行更改actionButton()。从技术上讲,还有另一种方法,但这是一种未记录的解决方法,因此对于这个问题来说毫无意义。如果您需要使用类似于闪亮变量的反应变量,input$则必须使用reactiveValues()函数调用来创建一个。如果您只是为变量赋值,则不需要反应变量。如果您尝试将先前创建的值重置为 NULL,则必须创建一个反应变量并将其设置为 NULL。以下是如何使用按钮将非反应变量设置为值或 NULL。

actionButton("do","Putlabelhere")
observeEvent(input$do,{
    rhm_clic <- value #or NULL
    return(rhm_clic) 
#the return is not needed but a good idea for beginners
}
Run Code Online (Sandbox Code Playgroud)