我在服务器功能中
此函数使用从selectInput和dateInput控件获取的noc和endDate输入来计算SalesClientData数据帧
此功能的结果用于在选项卡1上绘制输出
getPlotData <- reactive({
req(input$noc, input$endDate)
inpParam <<- input$noc
getSalesData(inpParam)
End_date <<- input$endDate
SalesClientData <<- "a"
})
我还有另一个函数,该函数不依赖于任何输入,但生成输出表,但是此函数将SalesClientData的值更改为b,当我再次移至选项卡1时,SalesClientData的值仍为b而不是a
此功能的结果用于在选项卡2上绘制输出
getFinalReportData <- reactive({
getInpChoice()
SalesClientData <<- "b"
})
我想做的是移回选项卡1后,该值应更改为SalesClientData的值
为简单起见,我使用了值a和b。
答案 0 :(得分:2)
您可以使用input$tabs
至access the active tab name。为此,您可以使用:
observeEvent(input$tabs,{
if(input$tabs == "tab1") {
SalesClientData <<- "a"
} else {
SalesClientData <<- "b"
}
})
我认为,与if
语句相比,对于您的问题可能有更好的解决方案,但是对于您的示例信息,这是我能提供的最佳解决方案。您使用全局<<-
运算符在reactive()
函数内部分配值与应使用什么反应性函数相反,而<<-
的使用通常具有undesirable effects。 reactive()
应该返回在应用程序中其他地方使用的值/对象。当您要修改对象而不返回任何内容时使用observe()
,这就是为什么我在答案中使用observe()
(您希望在环境中修改SalesClientData
而不返回任何内容)的原因。 / p>
我将查看有关反应性的文档:
https://shiny.rstudio.com/articles/reactivity-overview.html
https://shiny.rstudio.com/articles/understanding-reactivity.html
https://shiny.rstudio.com/gallery/reactivity.html