【发布时间】:2021-07-19 20:52:32
【问题描述】:
我想将按钮值传递给mod_test_server 并使用renderPrint 在mod_test_server 中显示它。不知道为什么我只能传递一次它的值。下一次点击不会导致任何动作 - 没有值传递。我在控制台中看到的是这个奇怪的错误:
'renderPrint(...)' 中的警告:重新启动中断的 Promise 评估
我正在寻找解决方案,我认为它与承诺有关,但我从未遇到过这样的问题并且使用了大量的反应性。为什么会发生?以及如何让它发挥作用?
这是可重现的示例:
library(shiny)
library(dplyr)
moduleServer <- function(id, module) {
callModule(module, id)
}
# UI - btn #
mod_btn_UI <- function(id) {
ns <- NS(id)
actionBttn(ns("btn"), "Click me")
}
# Server - btn #
mod_btn_server <- function(id){
moduleServer(id, function(input, output, session) {
return(reactive({input$btn}))
})
}
# UI - table #
mod_test_UI <- function(id) {
ns <- NS(id)
verbatimTextOutput(ns("myBtn"))
}
# Server - table #
mod_test_server <- function(id, btn){
moduleServer(id, function(input, output, session) {
ns <- session$ns
output$myBtn <- renderPrint({btn})
})
}
# App #
ui <- fluidPage(
tagList(
mod_btn_UI("btn"),
mod_test_UI("test")
)
)
server <- function(input, output, session) {
button <- mod_btn_server("btn")
btnClicked <- eventReactive(button(),{
button()})
mod_test_server("test", btnClicked())
}
shinyApp(ui = ui, server = server)
【问题讨论】:
标签: r shiny shiny-reactivity