使用updateSelectizeInput搜索时如何防止selectInput移动

问题描述

我有一个闪亮的大应用,其中有两个 selectInput,一个有两个选项,另一个使用 updateSelectizeInputserver = TRUE 来获取选项,因为有超过 36000 个元素可供选择显示,这会根据在第一个 selectInput 中选择的内容而变化。

它有效,但正如您从以下 gif 图中看到的那样,当我输入时,搜索框正在移动。我的猜测是它在服务器端搜索时移动。这可能是什么原因?我试图在一个简单的应用程序中重现问题,但尽管我添加了应用程序的所有相关部分,但在可重现的示例中没有问题。

enter image description here

这是一个示例代码:

library(shiny)
library(shinyjs)

option_list1<-seq(1,36000,1)
option_list2<-seq(36000,72000,1)

ui <- fluidPage(
  useShinyjs(),selectInput(
    inputId = "scsource",label = "Select source of scRNA-seq data",choices = list(
      "Carraro et al(2021) - Lung","Reyfman et al(2018) - Lung"
    ),selected = NULL,multiple = FALSE
  ),uiOutput("scgeneinput")
)

server <- function(input,output,session) {
  output$scgeneinput<-renderUI({
    req(input$scsource)
    selectInput(
      "scgene","Select multiple genes",multiple = TRUE,choices = NULL
    )
  })
  
  observeEvent(input$scsource,{
    if (input$scsource == "Carraro et al(2021) - Lung"){
      delay(500,updateSelectizeInput(session,"scgene",choices = option_list1,server = TRUE))
    }
    else if(input$scsource == "Reyfman et al(2018) - Lung"){
      delay(500,choices = option_list2,server = TRUE))
    }
  })
}

shinyApp(ui,server)

此外,我正在使用 shinyjs::delay 函数,因为没有它,将看不到选项。这不会发生在小型可重现的应用程序中。

任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)