Обновить вкладку после переключения вкладок - PullRequest
1 голос
/ 08 мая 2019

В функции сервера у меня есть

эта функция вычисляет фрейм данных SalesClientData с использованием входных данных noc и endDate, которые взяты из элементов управления selectInput и dateInput

Результат этой функции используется для вывода графика на вкладке 1

    getPlotData <- reactive({

      req(input$noc, input$endDate)

      inpParam <<- input$noc 
      getSalesData(inpParam)
      End_date <<- input$endDate    

      SalesClientData <<- "a"

  })

У меня есть другая функция, которая не зависит от какого-либо ввода, но генерирует выходную таблицу, но эта функция изменяет значение SalesClientData на b, и когда я снова перехожу на вкладку 1, значение SalesClientData по-прежнему равно b вместо

Результат этой функции используется для вывода вывода на вкладке 2

 getFinalReportData <- reactive({

    getInpChoice()
    SalesClientData <<- "b"

  })

Что я хочу сделать, это после того, как вы вернетесь на вкладку 1, значение должно измениться на SalesClientData

Я использовал значения a и b для простоты.

1 Ответ

2 голосов
/ 08 мая 2019

Вы можете использовать от input$tabs до доступа к имени активной вкладки . Чтобы реализовать это, вы можете использовать:

observeEvent(input$tabs,{
  if(input$tabs == "tab1") {
    SalesClientData <<- "a"
  } else {
    SalesClientData <<- "b"
  }
})

Я чувствую, что может быть более оптимальное решение вашей проблемы, чем утверждение if, но с вашей выборкой информации это лучшее, что я могу придумать. Использование вами глобального оператора <<- для присвоения значений внутри функции reactive() противоречит тому, для чего должны использоваться реактивные функции, а использование <<- часто имеет нежелательных эффектов . reactive() должен возвращать значение / объект, который используется в другом месте вашего приложения. observe() используется, когда вы хотите изменить объект, ничего не возвращая, поэтому в своем ответе я использовал observe() (Вы хотите изменить SalesClientData в среде, ничего не возвращая).

Я бы посмотрел документацию на реактивность:
https://shiny.rstudio.com/articles/reactivity-overview.html https://shiny.rstudio.com/articles/understanding-reactivity.html https://shiny.rstudio.com/gallery/reactivity.html

...