R 将全局输入管道化到模块中
假设我有以下闪亮的模块,它不能按我的预期工作:R 将全局输入管道化到模块中,r,shiny,shiny-server,shiny-reactivity,R,Shiny,Shiny Server,Shiny Reactivity,假设我有以下闪亮的模块,它不能按我的预期工作: library(shiny) # module module_ui <- function(id) { ns <- NS(id) uiOutput(ns("choose")) } module_server <- function(input, output, session) { output$choose <- renderUI({ selectInput(inputId = "option",
library(shiny)
# module
module_ui <- function(id) {
ns <- NS(id)
uiOutput(ns("choose"))
}
module_server <- function(input, output, session) {
output$choose <- renderUI({
selectInput(inputId = "option",
label = "choose your option",
choices = c("a", "b", input$entered_text))
})
}
# ui and server
ui <- fluidPage(
textInput("entered_text", label = "Enter a custom option:"),
module_ui("xyz")
)
server <- function(input, output, session) {
callModule(module_server, "xyz")
}
shinyApp(ui, server)
库(闪亮)
#模块
模块ui实际上,您应该使用reactive()
并将输入的文本的结果传递给您的模块,如下所示:
library(shiny)
# module
module_ui <- function(id) {
ns <- NS(id)
uiOutput(ns("choose"))
}
module_server <- function(input, output, session, et) {
output$choose <- renderUI({
selectInput(inputId = "option",
label = "choose your option",
choices = c("a", "b", et()))
})
}
# ui and server
ui <- fluidPage(
textInput("entered_text", label = "Enter a custom option:"),
module_ui("xyz")
)
server <- function(input, output, session) {
et <- reactive(input$entered_text)
callModule(module_server, "xyz", et)
}
shinyApp(ui, server)
库(闪亮)
#模块
哇,这是一个如此简单的解决方案!关键是使用函数格式et()
作为selectInput
的参数,谢谢您的回答!