You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Shiny模块化框架实现初始显示图片点击按钮隐藏功能

模块化Shiny应用:点击按钮隐藏图片

本应用初始状态下显示一张图片,点击侧边栏的「Submit」按钮后,图片将被隐藏。初始显示效果如下:

初始显示效果

app.R

library(shiny)
library(shinyjs)
library(shinydashboard)
library(shinyWidgets)
library(dplyr)

source("sideUI.R")
source("sideServer.R")
source("imgUI.R")
source("imgServer.R")

# 构建UI与Server并运行应用
ui <- dashboardPage(
  dashboardHeader(title = "生物多样性"),
  dashboardSidebar(sideUI("side")),
  dashboardBody(
    useShinyjs(),
    imgUI("imgPL")
  )
)

server <- function(input, output, session) {
  # 在另一个模块中使用响应式对象
  city_input <- sideServer("side")
  imgServer("imgPL", btn = city_input$btn)
}

shinyApp(ui, server)

imgUI.R

imgUI <- function(id) {
  ns <- NS(id)
  
  tagList(
    div(
      id = ns("showimg"),
      img(src='C:/Users/User/Documents/appsilon2/appsilon-main/www/apps.png', align = "center")
    )
  )
}

imgServer.R

imgServer <- function(id, btn) {
  moduleServer(
    id,
    function(input, output, session) {
      ns <- session$ns  # 创建命名空间函数
      observeEvent(btn(), {
        shinyjs::hide(id = ns("showimg"))  # 使用带命名空间的ID
      })
    }
  )
}

sideUI.R

sideUI <- function(id) {
  ns <- NS(id)
  tagList(
    actionButton(ns("action"), "Submit")
  )
}

sideServer.R

sideServer <- function(id) {
  moduleServer(
    id,
    function(input, output, session) {
      # 返回包含响应式对象的列表,供其他模块调用
      return(list(btn = reactive(input$action)))
    }
  )
}

内容的提问来源于stack exchange,提问作者firmo23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:52:34