切换标签后刷新标签
Refresh tab after switching tabs
我有服务器功能
此函数使用从 selectInput 和 dateInput 控件获取的 noc 和 endDate 输入计算 SalesClientData 数据帧
此函数的结果用于在选项卡 1 上绘制输出
getPlotData <- reactive({
req(input$noc, input$endDate)
inpParam <<- input$noc
getSalesData(inpParam)
End_date <<- input$endDate
SalesClientData <<- "a"
})
我有另一个函数,它不依赖于任何输入但会生成输出 table 但此函数将 SalesClientData 的值更改为 b,当我再次移至选项卡 1 时,SalesClientData 的值仍然是 b一个
此函数的结果用于在选项卡 2 上绘制输出
getFinalReportData <- reactive({
getInpChoice()
SalesClientData <<- "b"
})
我想做的是在返回选项卡 1 后,值应更改为 SalesClientData
为了简单起见,我使用了值 a 和 b。
您可以使用input$tabs
到access the active tab name。要实现这一点,您可以使用:
observeEvent(input$tabs,{
if(input$tabs == "tab1") {
SalesClientData <<- "a"
} else {
SalesClientData <<- "b"
}
})
我觉得对于您的问题可能有比 if
语句更优化的解决方案,但是根据您的示例信息,这是我能想到的最好的解决方案。您使用全局 <<-
运算符在 reactive()
函数内部赋值与应该使用反应函数的用途相反,并且 <<-
的使用通常有 undesirable effects。 reactive()
应该 return 一个 value/object 在您的应用程序的其他地方使用。 observe()
用于在不使用 return 修改对象时使用,这就是我在回答中使用 observe()
的原因(您希望在不使用 SalesClientData
的环境中修改 SalesClientData
return任何东西)。
我会查看反应性文档:
https://shiny.rstudio.com/articles/reactivity-overview.html
https://shiny.rstudio.com/articles/understanding-reactivity.html
https://shiny.rstudio.com/gallery/reactivity.html
我有服务器功能
此函数使用从 selectInput 和 dateInput 控件获取的 noc 和 endDate 输入计算 SalesClientData 数据帧
此函数的结果用于在选项卡 1 上绘制输出
getPlotData <- reactive({
req(input$noc, input$endDate)
inpParam <<- input$noc
getSalesData(inpParam)
End_date <<- input$endDate
SalesClientData <<- "a"
})
我有另一个函数,它不依赖于任何输入但会生成输出 table 但此函数将 SalesClientData 的值更改为 b,当我再次移至选项卡 1 时,SalesClientData 的值仍然是 b一个
此函数的结果用于在选项卡 2 上绘制输出
getFinalReportData <- reactive({
getInpChoice()
SalesClientData <<- "b"
})
我想做的是在返回选项卡 1 后,值应更改为 SalesClientData
为了简单起见,我使用了值 a 和 b。
您可以使用input$tabs
到access the active tab name。要实现这一点,您可以使用:
observeEvent(input$tabs,{
if(input$tabs == "tab1") {
SalesClientData <<- "a"
} else {
SalesClientData <<- "b"
}
})
我觉得对于您的问题可能有比 if
语句更优化的解决方案,但是根据您的示例信息,这是我能想到的最好的解决方案。您使用全局 <<-
运算符在 reactive()
函数内部赋值与应该使用反应函数的用途相反,并且 <<-
的使用通常有 undesirable effects。 reactive()
应该 return 一个 value/object 在您的应用程序的其他地方使用。 observe()
用于在不使用 return 修改对象时使用,这就是我在回答中使用 observe()
的原因(您希望在不使用 SalesClientData
的环境中修改 SalesClientData
return任何东西)。
我会查看反应性文档:
https://shiny.rstudio.com/articles/reactivity-overview.html
https://shiny.rstudio.com/articles/understanding-reactivity.html
https://shiny.rstudio.com/gallery/reactivity.html