闪亮-renderUI()和#x27存在问题;s反应性
我在R中遇到使用闪亮包装的困难 我试图理解为什么server.R中的“#选项1”不起作用,但注释了“#选项2”起作用。在“#选项1”处于活动状态时,尝试键入随机字符串并按下按钮。第一次它将文本框中的值替换为“abc”,但接下来的所有时间都不会 据我所知,val()已经依赖于输入$change,因此每次按下按钮时它都必须重新执行,而且“#选项2”被包装到了隔离()中,因此它不会增加任何反应性 使用“#选项1”时,该值似乎部分变为“abc”。打开Google Chrome的inspect元素后,您可以看到“#选项2”会更改每次按下按钮时的值,#选项1”也会将值更改为“abc”,但屏幕仅在第一次按下按钮时才会更新 代码如下: 服务器.R闪亮-renderUI()和#x27存在问题;s反应性,r,shiny,R,Shiny,我在R中遇到使用闪亮包装的困难 我试图理解为什么server.R中的“#选项1”不起作用,但注释了“#选项2”起作用。在“#选项1”处于活动状态时,尝试键入随机字符串并按下按钮。第一次它将文本框中的值替换为“abc”,但接下来的所有时间都不会 据我所知,val()已经依赖于输入$change,因此每次按下按钮时它都必须重新执行,而且“#选项2”被包装到了隔离()中,因此它不会增加任何反应性 使用“#选项1”时,该值似乎部分变为“abc”。打开Google Chrome的inspect元素后,您可
require(shiny)
shinyServer(function(input, output) {
val <- reactive({
if(input$change>0) {
# Option 1
'abc'
# # Option 2
# isolate({
# paste('abc',input$txt,"")
# })
} else {
''
}
})
output$textbox <- renderUI({
textInput("txt","Text",val())
})
})
这看起来确实有可能是一个错误隐藏在那里的某个地方,但我无法找到它 好消息是,我认为您应该能够通过
updateTextInput
函数实现这一效果
为了更深入地了解这个问题,我已经为此创建了一个bug。如果我们弄清楚发生了什么,我会尝试更新这篇文章。请看我的回复:
要点是服务器一直向
文本框发送完全相同的值,因此客户端“聪明”到可以忽略它。谢谢!我解决了这个问题,在文本输入值的末尾添加了一个空格,如果输入值的末尾有空格,则删除一个空格,这样新值将始终与前一个值不同。无论如何,我都会修剪所有传入的字符串。
require(shiny)
require(shinyIncubator)
shinyUI(pageWithSidebar(
headerPanel('Test'),
sidebarPanel(
uiOutput("textbox"),
actionButton("change", "Change")
),
mainPanel(
)
))