r - Shiny - observeEvent 无需点击即可出现
问题描述
我想开发一个有两个按钮的应用程序:1. 计算 2. 刷新
当我单击“计算”按钮时,会出现第二个按钮。当我点击第二个按钮时,会出现一个句子:“Le resultat est...”。按钮刷新清理网页。现在页面很干净,只出现了两个初始按钮:计算和刷新。
如果我再次单击“计算”按钮,则无需单击第二个按钮就会出现“Le resultat est ...”这句话。
问题:如何在单击第二个按钮后才能获得句子“Le resultat est...”?
在我的代码下面:
library(shiny)
data_Modele <- deval_Shiny
ui <- fluidPage(
actionButton("runif", "Uniform"),
actionButton("reset", "Clear"),
uiOutput("plot")
)
server <- function(input, output){
v <- reactiveValues(data = NULL)
observeEvent(input$runif, {
v$data <- round(runif(1, min=1, max=nrow(deval_Shiny)),digits = 0)
output$Button<- renderUI({
actionButton("button", "click me")
})
})
observeEvent(input$reset, {
v$data <- NULL
})
observeEvent(input$button, {
output$Reponse <- renderText(paste0("Le resultat est :",v$data))
})
output$plot <- renderUI({
if (is.null(v$data)) return()
tagList(
uiOutput("Button"),
uiOutput("Reponse")
)
})
}
shinyApp(ui, server)
预先感谢您的帮助 :)
J。
解决方案
如果你想让你uiOutputs
的行为分开,我建议不要将它们绑定在里面output$plot
。因此,如果您不需要它们在一起,我会添加一个变量show_response
来控制您是否要显示响应。
library(shiny)
ui <- fluidPage(
actionButton("runif", "Uniform"),
actionButton("reset", "Clear"),
uiOutput("Button"),
uiOutput("Reponse")
)
server <- function(input, output){
v <- reactiveValues(data = NULL)
show_response <- reactiveValues(state = FALSE)
observeEvent(input$runif, {
v$data <- round(runif(1, min = 1, max = 100), digits = 0)
})
observeEvent(input$reset, {
v$data <- NULL
show_response$state <- FALSE
})
observeEvent(input$button, {
show_response$state <- TRUE
})
output$Button <- renderUI({
req(v$data)
actionButton("button", "click me")
})
output$Reponse <- renderText({
req(show_response$state)
paste0("Le resultat est :", v$data)
})
}
shinyApp(ui, server)
推荐阅读
- php - 更改固定链接中的日期并执行链接
- maven - Maven 快照依赖
- javascript - 使用 Recaptcha 时未触发 jQuery 窗口加载
- c# - 具有相同数据的 Stimulsoft 字段
- r - 基于 3 列(重复)合并行并求和另一列
- reactjs - 在 React.js 中使用 CSS 模块时如何使用 getElementsByClassName?
- java - 一个输出奇怪的程序
- sql - 用 sum group 计算总平均成绩
- javascript - 将数据从本地存储(javascript)传递到 php
- ruby-on-rails - 我无法运行 mongodb,即使我已经关注了这里的大多数帖子