我想创建动态选项卡,每次用户单击一个按钮时,都会创建一个新选项卡.每个选项卡具有相同的内容,具有各种小部件,用户可以使用这些小部件来选择要绘制的数据集.
目前,我在这里使用解决方案动态创建我的选项卡,但是lapply正在调用一个调用tabPanel并向选项卡添加内容的函数的更改
`
renderUI({
some_data <- # Dataframe that data is extracted goes here
createTabs <- function(tabNum, some_data)
{
tabPanel(title = paste("Map", tabNum, sep=" "),
fluidRow(
column(
width = 3,
wellPanel(
#widgets are added here
}
mTabs <- lapply(0:input$map, createTabs, some_data)
do.call(tabsetPanel, mTabs)
})
Run Code Online (Sandbox Code Playgroud)
`
并在此处发布for循环的方法以在每个选项卡上创建绘图.
但是,似乎不是创建新选项卡,而是上面的两个解决方案都重新创建了所有现有选项卡.因此,如果当前打开了10个选项卡,则会重新创建所有10个选项卡.不幸的是,这也将重置每个选项卡上的所有用户设置(除了减慢应用程序),以及额外的条款必须被视为显示在这里,这进一步减慢,因为该应用的大量输入的对象必须创建.
我看到一个菜单项的解决方案似乎只是通过将所有菜单项存储在一个列表中来解决这个问题,每次生成一个新的菜单项时,它只是添加到列表中,以便所有其他现有项目都不会需要创建.这样的标签和渲染图也可以这样吗?
这是代码:
newTabs <- renderMenu({
menu_list <- list(
menu_vals$menu_list)
sidebarMenu(.list = menu_list)
})
menu_vals = reactiveValues(menu_list = NULL)
observeEvent(eventExpr = input$placeholder,
handlerExpr = {
menu_vals$menu_list[[input$placeholder]] <- menuSubItem(paste("Saved …Run Code Online (Sandbox Code Playgroud)