微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

条件`menuitem`的`tabitem`内容仅在闪亮中显示一次

如何解决条件`menuitem`的`tabitem`内容仅在闪亮中显示一次

我希望 menuItem 中的导航 shinydashboard 有条件并根据 server.R 中评估的条件显示

为此,我有一个包含 conditionalPanelmenuItem,在 sidebarMenu 中的常规 ui.R 旁边定义(我使用 shinymanager用户进行身份验证):

sidebar <- dashboardSidebar(
  width=280,sidebarMenu(id = "sidebarmenu",menuItem(...),menuItem(...,menuSubItem(...),menuSubItem(...)
                       )
              ),conditionalPanel(condition = "output.x === 1",menuItem("title",tabName="tabname")
                   )
  )

body <- dashboardBody(
  tabItems(
    tabItem(tabName = "id",fluidPage(
              titlePanel("Hello World")
    )),tabItem(tabName="tabname",titlePanel("mytitle"),fluidPage(
              dataTableOutput(outputId = "table")
              )
    )
)

ui <- dashboardPage(
  dashboardHeader(title = "Hello App",titleWidth=280),sidebar,body
)

ui <- secure_app(ui)

server.R 中,我根据登录用户登录详细信息切换 output.x

server <- function(input,output,session) {

  # login logic: call the server part,check_credentials returns a function to
  # authenticate users
  res_auth = secure_server(
    check_credentials = check_credentials
  )

  # Define the logon details with a reactive variable
  auth_output <- reactive({
    reactiveValuesToList(res_auth)
  })

  output$x = reactive({
    auth_output()$role
  })

  # Generate a data table from the DB to show conditionally
  conn = ...
  data = load_data(conn,...)
  disconnect(conn)

  output$table = dt_render({data})

  # All output variables that need to be transferred to the UI should have
  # suspendWhenHidden = FALSE:
  outputoptions(output,"x",suspendWhenHidden = FALSE)

问题:条件表只显示一次,只要我想。在这一次之后,一旦我离开它,点击条件 menuItem 就不会显示任何内容menuItem 仍然出现,这意味着 output.x === 1 被正确评估,但其内容,即后续的 tabItem,仍然隐藏。

我曾尝试将 isolate 分配给 output.x,甚至将其固定为 1 也无济于事。有线索吗?

解决方法

由于conditionalPanel不能放在默认的sidebarMenu中,所以它必须在它的独立条件sidebarMenu中,所以我必须在{下定义两个sidebarMenu {1}} 在这种情况下。以下修改解决了问题:

dashboardSidebar

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。