开始使用免费开始使用

使用 isolate() 停止响应

通常,只要读取一次响应式值,就会建立依赖关系;当该响应式值发生变化时,会导致调用它的表达式重新执行。isolate() 函数允许在不触发重新执行的情况下读取响应式值。

在本练习中,您将使用 isolate() 函数来阻断响应式传播。

本练习是课程的一部分

使用 R 构建 Shiny Web 应用

查看课程

练习说明

  • 更新服务器端代码,使文本输出只在用户更改身高或体重时更新,而不要因姓名的变化而更新。

交互式实操练习

通过完成这段示例代码来试试这个练习。

ui <- fluidPage(
  titlePanel('BMI Calculator'),
  sidebarLayout(
    sidebarPanel(
      textInput('name', 'Enter your name'),
      numericInput('height', 'Enter your height (in m)', 1.5, 1, 2, step = 0.1),
      numericInput('weight', 'Enter your weight (in Kg)', 60, 45, 120)
    ),
    mainPanel(
      textOutput("bmi")
    )
  )
)

server <- function(input, output, session) {
  rval_bmi <- reactive({
    input$weight/(input$height^2)
  })
  output$bmi <- renderText({
    bmi <- rval_bmi()
    # MODIFY CODE BELOW: 
    # Use isolate to stop output from updating when name changes.
    paste("Hi", input$name, ". Your BMI is", round(bmi, 1))
  })
}

shinyApp(ui = ui, server = server)
编辑并运行代码