现在我读了几次关于react 式编程的精彩文档,但我无法正确理解observeEventeventReactive之间的区别.

文件上说:

无论何时,只要你想执行一个动作来响应一个事件,就可以使用observeEvent.(请注意,"重新计算值"通常不算作执行某个操作——请参阅EventResponsive.)

....

使用EventResponsive创建仅在响应事件时更新的计算值.这就像一个普通的react 式表达式,只是它忽略了来自其react 式依赖项的所有常见无效;

在我try 过的所有情况下,我都没有看到使用observeEventeventReactive之间的区别(无论我使用什么函数,代码都可以正常工作,对性能没有明显影响).

你能帮我找出两者的真正区别吗?理想情况下,我想举几个例子来说明它们何时是可互换的,一个是observeEvent可以工作,但不是eventReactive,反之亦然.

推荐答案

正如@daatali所说,这两个函数用于不同的目的.

ui <- shinyUI(pageWithSidebar(
  headerPanel("eventReactive and observeEvent"),
  sidebarPanel(
    actionButton("evReactiveButton", "eventReactive"),
    br(),
    actionButton("obsEventButton", "observeEvent"),
    br(),
    actionButton("evReactiveButton2", "eventReactive2")
  ),
  mainPanel(
    verbatimTextOutput("eText"),
    verbatimTextOutput("oText")
  )
))

server <- shinyServer(function(input, output) {
  etext <- eventReactive(input$evReactiveButton, {
    runif(1)
  })
  observeEvent(input$obsEventButton,{
    output$oText <- renderText({ runif(1) })
  })
  eventReactive(input$evReactiveButton2,{
    print("Will not print")
    output$oText <- renderText({ runif(1) })
  })
  output$eText <- renderText({
    etext()
  })
})

shinyApp(ui=ui,server=server) 

eventReactive创建一个根据eventExpr变化的无功值,而observeEvent只是根据eventExpr触发

R相关问答推荐

在' geom_contour_filled()'中对齐两个gplot的 colored颜色 比例

pivot_longer:names_to和names_pattern

想要创建一个可以存储四个多元正态总体的多元偏度的载体

仅在ggplot的每个方面绘制最丰富的物种

如何将多个数据帧附加到R中的多个相应的CSV文件中?

提取R中值和列名的所有可能组合

带有gplot 2的十字舱口

在值和NA的行顺序中寻找中断模式

如果列中存在相同的字符串,则对行值进行总和

通过使用str_detect对具有相似字符串的组进行分组

使用整齐的计算(curl -curl )和杂音

对于变量的每个值,仅 Select 包含列表中所有值的值.R

从多个线性回归模型中提取系数

函数可以跨多个列搜索多个字符串并创建二进制输出变量

KM估计的差异:SvyKm与带权重的调查

是否可以将线性模型的p值添加到tbl_summary中

R中治疗序列的相对时间指数

如何为混合模型输出绘制不同的线型?

网络抓取新闻标题和时间

是否从列中删除★符号?