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())`
我可以使用 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())`