從伺服器向客戶端傳送資料

在許多情況下,你需要將資料從 R 伺服器傳送到 JS 客戶端。這是一個非常簡單的例子:

library(shiny)
runApp(
  list(
    ui = fluidPage(
      tags$script(
        "Shiny.addCustomMessageHandler('message', function(params) { alert(params); });"  
      ),
      actionButton("btn","Press Me")
    ),
    server = function(input, output, session) {
      observeEvent(input$btn,{
        randomNumber <- runif(1,0,100)
        session$sendCustomMessage("message",list(paste0(randomNumber," is a random number!")))
      })
    }
  )
)

這裡的主要工具是 R 中的 session$sendCustomMessage 函式和 javascript 中的 Shiny.addCustomMessageHandler 函式。

session$sendCustomMessage 函式允許你將引數從 R 傳送到 javascript 函式,Shiny.addCustomMessageHandler 讓你定義接受 R 引數的 javascript 函式。

注意:列表從 R 傳遞到 javascript 時會轉換為 JSON