Button 闪亮的按钮只需要一次
我希望仅通过单击按钮首次触发事件。之后,我希望它是反应滑块输入 我尝试了以下方法:Button 闪亮的按钮只需要一次,button,shiny,reactive,Button,Shiny,Reactive,我希望仅通过单击按钮首次触发事件。之后,我希望它是反应滑块输入 我尝试了以下方法: ui <- fluidPage( actionButton("go", "Go"), sliderInput("n", label = "Sample size", min = 1, max = 100, value = 10), plotOutput('samples') ) server <- function(input, output, session){ activate
ui <- fluidPage(
actionButton("go", "Go"),
sliderInput("n", label = "Sample size", min = 1, max = 100, value = 10),
plotOutput('samples')
)
server <- function(input, output, session){
activate = reactive({FALSE})
activate = eventReactive(input$go, {
isolate(TRUE)
})
samples = eventReactive(activate(), {
rnorm(input$n)
})
output$samples <- renderPlot({ hist(samples()) })
}
shinyApp(ui = ui, server = server)
有几种方法可以实现这一点 一种方法是将值存储在
reactiveValues()
中,或者只使用req()
,如下所示
使用eventReactive(activate(),…
的问题在于,只有在执行activate()
时才会触发内部代码,而只有在单击input$go
时才会发生这种情况
带有req()
的可复制示例:
ui <- fluidPage(
actionButton("go", "Go"),
sliderInput("n", label = "Sample size", min = 1, max = 100, value = 10),
plotOutput('samples')
)
server <- function(input, output, session){
output$samples <- renderPlot({
req(input$go > 0)
hist(rnorm(input$n))
})
}
shinyApp(ui = ui, server = server)
ui <- fluidPage(
actionButton("go", "Go"),
sliderInput("n", label = "Sample size", min = 1, max = 100, value = 10),
plotOutput('samples')
)
server <- function(input, output, session){
global <- reactiveValues(showPlot = FALSE)
observeEvent(input$go, {
global$showPlot <- TRUE
})
samples = reactive({
rnorm(input$n)
})
output$samples <- renderPlot({
req(global$showPlot)
hist(samples())
})
}
shinyApp(ui = ui, server = server)