当文件输入被 actionButton 重置时,文件输入验证不起作用
File input validation does not work when the file input is reset by an actionButton
我有一个简单的闪亮应用程序,我需要在其中上传一个 csv,然后我应该能够通过单击操作按钮来重置它。如果没有文件,则应显示一条错误消息。问题是点击重置按钮后没有显示此错误消息。
library(shiny)
library(shinyjs)
library(tidyverse)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
useShinyjs(),
fileInput('inFile', 'Choose 1st file'),
tags$hr(),
actionButton('reset', 'Reset')
),
mainPanel(
textOutput("choose")
)
)
)
server <- function(input, output, session) {
rv <- reactiveValues(
data = NULL,
clear = FALSE
)
########1st
observe({
req(input$inFile)
req(!rv$clear)
rv$data <- read.csv(input$inFile$datapath,header = T)
})
observeEvent(input$inFile, {
rv$clear <- FALSE
}, priority = 1000)
observeEvent(input$reset, {
rv$data <- NULL
rv$clear <- TRUE
reset('inFile')
}, priority = 1000)
output$choose <- reactive({
if(is.null(input$inFile))
{
"You must upload 1st csv at least"
}
else
{
"Now we can process the data!"
}
})
}
shinyApp(ui, server)
第 49 行有一点错字。
这一行
if(is.null(input$inFile))
应该是
if(is.null(rv$data))
我有一个简单的闪亮应用程序,我需要在其中上传一个 csv,然后我应该能够通过单击操作按钮来重置它。如果没有文件,则应显示一条错误消息。问题是点击重置按钮后没有显示此错误消息。
library(shiny)
library(shinyjs)
library(tidyverse)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
useShinyjs(),
fileInput('inFile', 'Choose 1st file'),
tags$hr(),
actionButton('reset', 'Reset')
),
mainPanel(
textOutput("choose")
)
)
)
server <- function(input, output, session) {
rv <- reactiveValues(
data = NULL,
clear = FALSE
)
########1st
observe({
req(input$inFile)
req(!rv$clear)
rv$data <- read.csv(input$inFile$datapath,header = T)
})
observeEvent(input$inFile, {
rv$clear <- FALSE
}, priority = 1000)
observeEvent(input$reset, {
rv$data <- NULL
rv$clear <- TRUE
reset('inFile')
}, priority = 1000)
output$choose <- reactive({
if(is.null(input$inFile))
{
"You must upload 1st csv at least"
}
else
{
"Now we can process the data!"
}
})
}
shinyApp(ui, server)
第 49 行有一点错字。
这一行
if(is.null(input$inFile))
应该是
if(is.null(rv$data))