Flexdashboard - 使用反应值隐藏导航栏选项卡

Flexdashboard - hidden navbar tab using reactive values

我可以使用 show_hide 的静态值隐藏导航栏页面,但我不知道如何使用反应值 r_show_hide() 来隐藏导航栏页面。我也试过使用 isolate(ifelse...) 然后 r_show_hide (没有括号)以及 reactiveVal() 无济于事。

还有一个无关的 "> 出现了。任何帮助将不胜感激。

更新: 我创建了一个问题 https://github.com/rstudio/flexdashboard/issues/229


    ---
    title: "-"
    output: flexdashboard::flex_dashboard
    runtime: shiny
    ---

    ```{r setup, include=FALSE}
    library(flexdashboard)
    library(shiny)

    show_hide <- "show" # "hidden"

    r_show_hide <- reactive(ifelse(session$clientData$url_hostname == "127.0.0.1", "hidden", "show"))
    ```

    Does work {.`r show_hide`}
    =============================

    ### Should be `r show_hide`


    Doesn't work {.`r reactive(r_show_hide())`}
    ===============================

    ### Should be `r renderText(r_show_hide())`

好吧,这花了我一段时间才弄明白。

根本问题是 flexdashboard 导航栏大括号中的 r 个块在非反应性上下文中进行评估,而构建每个页面内容的 r 个块在反应性上下文中进行评估。因此,您不能使用诸如 r_show_hide() 之类的反应来触发导航栏页面的参数 hidden/show,但您可以在页面内的 renderText() 函数中使用 r_show_hide()

所以实际的问题是,如何从非反应性上下文访问反应性值。答案是 isolate() 并解释 here

下面我提供了一个使用您的代码的示例。

---
title: "-"
output: flexdashboard::flex_dashboard
runtime: shiny
---

```{r setup, include=FALSE}
library(flexdashboard)
library(shiny)

show_hide <- "show" # "hidden"

r_show_hide <- reactive(ifelse(session$clientData$url_hostname == "127.0.0.1", "hidden", "show"))
```

Does work {.`r show_hide`}
=============================

### Should be `r show_hide`


Doesn't work {.`r isolate(r_show_hide())`}
===============================

### Should be `r renderText(r_show_hide())`