我无法让shiny 的服务器在主面板中同时呈现html文本和图标,除非我在UI中独立于服务器呈现图标.下面是一个最小的例子:

library(shiny)

ui <- fluidPage(
  titlePanel("Icon test app"),
  sidebarLayout(
    
    sidebarPanel(
    ),
    
    mainPanel(
      
          htmlOutput("restart"),

          h3("Refresh icon from ui()",icon("refresh"))
    )
  )
)

server <- function(input, output) {
 observe({ output$restart = renderText(

    paste0("<h3>",
           "Refresh icon from server()",
           icon("refresh"),
           "</h3>"
    )
  )
 })
}

shinyApp(ui = ui, server = server)

enter image description here

现在,没有由UI呈现的文本和图标的相同示例,它显示了由服务器单独呈现的文本,即没有图标:

library(shiny)

ui <- fluidPage(
  titlePanel("Icon test app"),
  sidebarLayout(
    
    sidebarPanel(
    ),
    
    mainPanel(
      
          htmlOutput("restart"),

          # h3("Refresh icon from ui()",icon("refresh"))
    )
  )
)

server <- function(input, output) {
 observe({ output$restart = renderText(

    paste0("<h3>",
           "Refresh icon from server()",
           icon("refresh"),
           "</h3>"
    )
  )
 })
}

shinyApp(ui = ui, server = server)

enter image description here

感谢您的帮助,谢谢!

推荐答案

icon()的代码在UI函数中运行时会向呈现层添加一个html依赖项.如果只在服务器中使用icon()函数,依赖项不会添加到html中.您可以通过将依赖项手动注入到您的UI中来修复此问题.将fontawesome::fa_html_dependency()添加到您的UI布局中.例如,这应该是可行的:

ui <- fluidPage(
  fontawesome::fa_html_dependency(),
  titlePanel("Icon test app"),
  sidebarLayout(    
    sidebarPanel(
    ),    
    mainPanel(      
      htmlOutput("restart")
    )
  )
)

R相关问答推荐

使用对管道内单元格的引用生成新变量

R创建一个数据透视表,计算多个组的百分比

r中的stat_difference函数不起作用

根据R中的另一个日期从多列中 Select 最近的日期和相应的结果

gt()从gt为相同内容的单元格 colored颜色 不同?

修改用R编写的用户定义函数

将包含卷的底部25%的组拆分为2行

将多列合并为单独的名称—值对

以更少间隔的较小表中的聚合离散频率表

如何写商,水平线,在一个单元格的表在R

仅在Facet_WRAP()中的相应方面包含geom_abline()

如何将使用rhandsontable呈现的表值格式化为百分比,同时保留并显示完整的小数精度?

函数可以跨多个列搜索多个字符串并创建二进制输出变量

基于数据集属性将科分配给物种

使用gt_summary是否有一种方法来限制每个变量集进行配对比较?

有没有办法通过str_Detect()或其他字符串匹配函数来连接两个长度不等的数据帧?

TidyVerse中长度不等的列结合向量

如果满足条件,则替换列的前一个值和后续值

如何在访问之前下载的输入时同时上传和处理所有指定的shiny 输入?

在不带max()的data.table中按组查找最后一个元素