是否更新observeEvent()中的“global”React组件?

7z5jn7bk  于 2023-05-11  发布在  React
关注(0)|答案(1)|浏览(96)

我想更新observeEvent()内部的一个React组件,然后稍后调用它。但是该值不是全局传递的,而是在observeEvent()中局部传递的。
这不会更新myText()。

ui <- fluidPage(
  textInput("name", "Enter your name:"),
  actionButton("myButton", "Click me!"),
  h4("Output:"),
  verbatimTextOutput("myOutput")
 
)

server <- function(input, output, session) {
  myText <- reactive({
    paste("Hello, ", input$name, "!")
  })
  
  observeEvent(input$myButton, {
    # Update the reactive value
    myText <- reactive({
      paste("Goodbye, ")
    })
  })
  
  output$myOutput <- renderPrint({
    myText()
  })

}

shinyApp(ui, server)

如果我在observeEvent()中使用renderPrint(),这是可行的,但这不是我想要的。
有没有一种方法可以更新React式组件,使其对server()中的其他函数全局可用?

yeotifhr

yeotifhr1#

我用reactiveValues()找到了一个解决方案:

btn1_output <- reactiveValues(value = NULL)
  observeEvent(input$myButton, {
    # Collect the reactive value
    btn1_output$value <- paste('Goodbye, ', input$name)
  })

  output$myOutput2 <- renderPrint({
    btn1_output$value
  })

相关问题