R:删除新创建的选项卡

R:删除新创建的选项卡,r,shiny,R,Shiny,我正在编写一个闪亮的应用程序,我希望用户能够添加和删除标签。我知道如果用户点击一个专门为它制作的标签,如何添加标签(多亏了答案),但我不知道如何删除最后创建的标签 下面是一个可复制的示例: library(shiny) library(shinyWidgets) ui <- navbarPage(position = "static-top", title = "foo", id = "tabs",

我正在编写一个闪亮的应用程序,我希望用户能够添加和删除标签。我知道如果用户点击一个专门为它制作的标签,如何添加标签(多亏了答案),但我不知道如何删除最后创建的标签

下面是一个可复制的示例:

library(shiny)
library(shinyWidgets)

ui <- navbarPage(position = "static-top",
                 title = "foo",
                 id = "tabs",
                 tabPanel(title = "Name 1",
                          fluidRow()),
                 tabPanel(title = "More",
                          icon = icon("plus"),
                          fluidRow()),
                 tabPanel(title = "Less",
                          icon = icon("minus"),
                          fluidRow())
)

server <- function(input, output) {

  count <- reactiveVal(1)

  observeEvent(input$tabs, {
    if (input$tabs == "More"){
      count(count()+1)
      id = paste0("Name ", count())
      insertTab(inputId = "tabs",
                tabPanel(title = id,
                         fluidRow(column(
                           width = 12))
                ), target = "More", position = "before",
                select = TRUE)}
    if (input$tabs == "Less"){
      count(count()+1)
      id = paste0("Name ", count())
      removeTab(inputId = "tabs",
                target = id
                )}
  })

}

shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(shinyWidgets)

ui我通过添加选择器和移除按钮来实现这一点,然后重新使用选择器索引。要做到这一点,请使用每次按下单个按钮时计数的反应值,或在交互完成时记录

请尝试以下代码:

library(shiny)
library(shinyWidgets)

ui <- navbarPage(position = "static-top",
                 title = "foo",
                 id = "tabs",
                 tabPanel(title = "Name 1",
                          fluidRow()),
                 tabPanel(title = "More",
                          icon = icon("plus"),
                          fluidRow()),
                 tabPanel(title = "Less",
                          icon = icon("minus"),
                          fluidRow())
)

server <- function(input, output) {

  count <- reactiveValues(value = 1)

  observeEvent(input$tabs, {
    if (input$tabs == "More"){
      count$value <- count$value + 1
      id = paste0("Name ", count$value)
      insertTab(inputId = "tabs",
                tabPanel(title = id,
                         fluidRow(column(
                           width = 12))
                ), target = "More", position = "before",
                select = TRUE)}
    if (input$tabs == "Less"){
      print(count$value)
      id = paste0("Name ", count$value)
      removeTab(inputId = "tabs",
                target = id
      )

      count$value <- count$value -1
      }
  })

}

shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(shinyWidgets)

ui很完美,但有一个缺陷(由于我在问题中没有提到的东西,所以这是我的错):当我点击
Less
两次时,它只会删除最后创建的选项卡,但第二次点击将毫无用处。我希望在
Less
上单击两次可以删除最后创建的两个选项卡,您知道如何修复它吗?无论如何,谢谢你的解决方案