[英]R Shiny update reactive value using a non reactive variable
我有一個簡單的文本和一個簡單的按鈕
一個變量被初始化為0,每次按下按鈕,這個變量的值都會增加1,動態文本應該是一些文本和反應值的串聯。
這就是我想出的,我對反應值很陌生,所以可能有問題,但我不知道具體是什么。
變量 start 正確初始化為 0,並且文本正確呈現為 clicks 0。
一旦我按下按鈕,變量 start 就會正確更新為 1,文本也會相應地更新。 但每隔一次按下,變量就會返回其原始值 0,因此從第二次按下按鈕開始,文本將始終相同,等於點擊 1。
什么將開始變量更新為 0? 據我了解,服務器塊執行一次,並且在觸發動作時執行前端和后端之間的單個輸入/輸出,但從理論上講,從零開始的歸零應該只在啟動時發生一次。 我錯了嗎?
library(shiny)
ui <- fluidPage(
uiOutput("text_header"),
actionButton("go", "Go")
)
server <- function(input, output) {
start <- 0
rv <- reactiveVal(paste("clicks",start))
observeEvent(input$go, {
start <- start + 1
rv(paste("clicks",start))
})
output$text_header <- renderUI({
h1(rv(), align = "center")
})
}
shinyApp(ui, server)
start
也需要具有反應性,才能與其他反應性值一起使用。 這是一個可以工作的重寫
library(shiny)
ui <- fluidPage(
uiOutput("text_header"),
actionButton("go", "Go")
)
server <- function(input, output) {
start <- reactiveVal(0)
rv <- reactive(paste("clicks",start()))
observeEvent(input$go, {
start(start() + 1)
})
output$text_header <- renderUI({
h1(rv(), align = "center")
})
}
shinyApp(ui, server)
我們讓start
反應值,然后rv
完全取決於start
的當前值。 也許“開始”在這里不是最好的詞,你可以重命名它
library(shiny)
ui <- fluidPage(
uiOutput("text_header"),
actionButton("go", "Go")
)
server <- function(input, output) {
start <- 0
clickCount <- reactiveVal(start)
rv <- reactive(paste("clicks",clickCount()))
observeEvent(input$go, {
clickCount(clickCount() + 1)
})
output$text_header <- renderUI({
h1(rv(), align = "center")
})
}
shinyApp(ui, server)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.