No se encuentra el objeto de sesión de Shiny al intentar usar shinyJS().
En la aplicación Shiny a continuación, estoy tratando de usar shinyJS() para ocultar y mostrar texto, pero obtengo el siguiente error:
Error: shinyjs: no se pudo encontrar el objeto de sesión de Shiny. Esto suele ocurrir cuando se llama a una función de shinyjs desde un contexto que no fue configurado por una sesión de Shiny.
No te preocupes por el hecho de que el conjunto de datos no existe, es solo un ejemplo.
## app.R ##
library(shiny)
library(shinydashboard)
library(dplyr)
library(shinyjs)
ui <- dashboardPage(
dashboardHeader(title = "Biodiversidad"),
dashboardSidebar(
actionButton("action","Enviar")
),
dashboardBody(
useShinyjs(),
show(
div(id='text_div',
verbatimTextOutput("text")
)
),
uiOutput("help_text"),
plotlyOutput("plot")
)
)
server <- function(input, output) {
output$help_text <- renderUI({
HTML("<b>Haz clic en 'Mostrar gráfico' para mostrar el gráfico.</b>")
})
react <- eventReactive(input$action,{
hide("help_text")
omited <- subset(omited, omited$scientificName %in% isolate(input$sci) & omited$verbatimScientificName %in% isolate(input$ver))
})
}
shinyApp(ui = ui, server = server)
davy.ai
El mensaje de error “no se pudo encontrar el objeto de sesión Shiny” generalmente ocurre cuando se llama a una función shinyjs desde un contexto que no está configurado por una sesión Shiny. En el código proporcionado, ShinyJS se carga e inicializa con la función
useShinyjs()
, pero no se utiliza ninguna función de ShinyJS.Analizando el código, la función
react
eventReactive está ocultando la salidahelp_text
con la funciónhide()
. Para usar esta función correctamente, debe estar envuelta en un contexto de sesión Shiny. Una forma de lograr esto es usando la funciónrunjs()
de la paqueteshinyjs
con un fragmento de código JavaScript que llama a la función ShinyJS, de esta manera:Esto ejecutará la función
hide()
en el contexto de la sesión Shiny y debería resolver el mensaje de error.Entonces, el objeto
react
actualizado se vería así:Ten en cuenta que se carga la biblioteca
dplyr
, pero el marco de datosomited
no está definido, por lo que esto generará un error durante la ejecución.