仅当 conditionalPanel 条件满足时才渲染输出
Render output only when conditionalPanel conditions satisfied
我正在编写一个 Shiny 应用程序,它将部署到屏幕分辨率从 720p 到 1080p 不等的各种用户。该应用程序将部署在网络上。
我的页面有一个简单的侧边栏和一个主要内容区域。为了调整侧边栏的宽度(以包含所有内容而无需任何滚动),我在我的 UI.r 中使用了两个 conditionalPanels
,它们通过 UI 呈现适当的 1080p 或 720p评估 "screen.width > 1600"
或 "screen.width < 1600"
.
这工作正常,并根据需要呈现适当的 UI。
然而,在对应用程序进行分析后,我意识到虽然确实显示了适当的 UI 面板,但我的服务器代码正在渲染高分辨率和低分辨率输出,即使在任何给定时间。
有什么方法可以禁用未显示的输出吗?我正在研究使用全局变量,因为屏幕宽度在会话期间永远不会改变,但我在使用 shinyjs 和评估 "screen.width"
表达式时遇到了麻烦——它似乎 return NULL
除了在 conditionalPanel
内的任何地方
谢谢
没有最小的可重现示例,很难提供解决方案。但是 req
或 validate
和 need
可能就是您想要的。
req
用于在执行前检查值是否存在:req documentation.
validate
和 need
可以以非常相似的方式一起使用:validate documentation.
例如,您可以尝试:
output$my_1080_plot = renderPlot(
validate(need(screen.width > 1600, message = FALSE))
# other commands to make plot
)
如果不满足逻辑条件则评估停止并且其他命令不是运行。
我正在编写一个 Shiny 应用程序,它将部署到屏幕分辨率从 720p 到 1080p 不等的各种用户。该应用程序将部署在网络上。
我的页面有一个简单的侧边栏和一个主要内容区域。为了调整侧边栏的宽度(以包含所有内容而无需任何滚动),我在我的 UI.r 中使用了两个 conditionalPanels
,它们通过 UI 呈现适当的 1080p 或 720p评估 "screen.width > 1600"
或 "screen.width < 1600"
.
这工作正常,并根据需要呈现适当的 UI。
然而,在对应用程序进行分析后,我意识到虽然确实显示了适当的 UI 面板,但我的服务器代码正在渲染高分辨率和低分辨率输出,即使在任何给定时间。
有什么方法可以禁用未显示的输出吗?我正在研究使用全局变量,因为屏幕宽度在会话期间永远不会改变,但我在使用 shinyjs 和评估 "screen.width"
表达式时遇到了麻烦——它似乎 return NULL
除了在 conditionalPanel
谢谢
没有最小的可重现示例,很难提供解决方案。但是 req
或 validate
和 need
可能就是您想要的。
req
用于在执行前检查值是否存在:req documentation.
validate
和 need
可以以非常相似的方式一起使用:validate documentation.
例如,您可以尝试:
output$my_1080_plot = renderPlot(
validate(need(screen.width > 1600, message = FALSE))
# other commands to make plot
)
如果不满足逻辑条件则评估停止并且其他命令不是运行。