输入$shinyTree在新渲染后不会更新
在下面的输入$shinyTree在新渲染后不会更新,r,shiny,shinytree,R,Shiny,Shinytree,在下面的shiny应用程序中,我有一个重置按钮,可以重置shinyTree。我认为在按下重置按钮后,相应的input$tree不会更新,即input$tree仍反映未重置状态。通过移动一些节点并按下重置按钮来尝试应用程序,您将看到,当输出被重置时,逐字输出仍然显示旧版本 这种行为是故意的吗?当output$tree发生更改时,如何强制shinyTree更新input$tree?能解决我的问题吗 library(shiny) library(shinyTree) ui <- fluidPa
shiny
应用程序中,我有一个重置按钮,可以重置shinyTree
。我认为在按下重置按钮后,相应的input$tree
不会更新,即input$tree
仍反映未重置状态。通过移动一些节点并按下重置按钮来尝试应用程序,您将看到,当输出被重置时,逐字输出仍然显示旧版本
这种行为是故意的吗?当output$tree
发生更改时,如何强制shinyTree
更新input$tree
?能解决我的问题吗
library(shiny)
library(shinyTree)
ui <- fluidPage(actionButton("reset", "reset"),
shinyTree("tree", dragAndDrop=TRUE, sort = F, wholerow = T, unique = T),
verbatimTextOutput("str"))
server <- function(input, output, session) {
output$tree <- renderTree({
input$reset
list(
root3 = "234",
root1 = list(
SubListA = list(leaf1 = "", leaf2 = "")
),
root2 = list(
SubListA = list(leaf1 = "", leaf2 = "")
)
)
})
output$str <- renderPrint({
# shinyTrees will also be available as inputs so you can
# monitor changes that occur to the tree as the user interacts
# with it.
str(input$tree)
})
}
shinyApp(ui, server)
库(闪亮)
图书馆(银树)
ui请检查以下内容,您可以通过JS强制重置输入$tree
:
library(shiny)
library(shinyTree)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
actionButton("reset", "reset"),
shinyTree("tree", dragAndDrop=TRUE, sort = F, wholerow = T, unique = T),
verbatimTextOutput("str"))
server <- function(input, output, session) {
observeEvent(input$reset, {
runjs("Shiny.setInputValue('tree', null);")
})
output$tree <- renderTree({
input$reset
list(
root3 = "234",
root1 = list(
SubListA = list(leaf1 = "", leaf2 = "")
),
root2 = list(
SubListA = list(leaf1 = "", leaf2 = "")
)
)
})
output$str <- renderPrint({
str(input$tree)
})
}
shinyApp(ui, server)
库(闪亮)
图书馆(银树)
图书馆(shinyjs)
ui仅供参考,正如已经假设的那样,解决了这个问题
devtools::install_github("shinyTree/shinyTree#89")
options(shinyTree.refresh = TRUE)
背后的原因是shinyTree
作者决定在刷新时不回调(或者setState
处理所有相关问题),因此input$tree
不“知道”它已更改并返回陈旧的树。新的PR允许在刷新时显式回调(通过设置选项),这解决了我的问题。我不建议在R 4.0.2中使用此解决方案:
devtools::install_github("shinyTree/shinyTree#89")
options(shinyTree.refresh = TRUE)
对我来说,它导致了一个类似的问题,我只有在重新安装R之后才能解决这个问题。我已经提前阅读了这篇文章,尽管相关,但它并不能解决我的问题。我在帖子里说得很清楚。不过谢谢你的指点。啊,好吧,你应该首先提到这一点。我发布了另一个解决方案-希望能有所帮助。好主意。我刚刚在renderTree
中添加了对input$tree
的依赖性,以获得完整性,但在其他方面效果很好+1.