美文网首页
Shiny 模块间通信

Shiny 模块间通信

作者: 上校的猫 | 来源:发表于2021-05-08 15:19 被阅读0次

想实现在页面1上点击按钮,跳转到页面2,每个页面作为一个module。

错误的写法:

模块之间的变量不共享,无法达到预期目的。
app.R

library(shiny)

source("page1.R")
source("page2.R")

ui <- navbarPage(
  title = "test",
  id = "test",
  ui.page1(0),
  ui.page2(0)
)

server <- function(input, output, session) {
  s1 <- server.page1(0)
}
shinyApp(ui = ui, server = server)

page1.R

ui.page1 <- function(id) {
  ns <- NS(id)
  tabPanel(
    title = "page1",
    value ="page1",
    actionButton(inputId = ns("jt2"),label = "Jump to page 2")
  )}

server.page1 <-  function(id) {
  moduleServer(id,function(input, output, session) {
    observeEvent(input$jt2, {
      updateNavbarPage(session, inputId = "test", selected = "page2")
    }
    )
    }
    )
  }

page2.R

ui.page2 <- function(id) {
  ns <- NS(id)
  tabPanel(
    title = "page2",
    value = "page2",
    tags$h1("Here is page 2.")
  )}

正确写法

app.R

library(shiny)

source("page1.R")
source("page2.R")

ui <- navbarPage(
  title = "test",
  id = "test",
  ui.page1(0),
  ui.page2(0)
)

server <- function(input, output, session) {
  s1 <- server.page1(0)
  observeEvent(s1$jt2(), {
    updateNavbarPage(session, inputId = "test", selected = "page2")
  })
}

shinyApp(ui = ui, server = server)

page1.R

ui.page1 <- function(id) {
  ns <- NS(id)
  tabPanel(
    title = "page1",
    value = "page1",
    actionButton(inputId = ns("jt2"),label = "Jump to page 2")
    )}

server.page1 <-  function(id) {
  moduleServer(id,module = function(input, output, session) {
    return(list(jt2 = reactive({input$jt2})))
  }
  )
  }

page2

ui.page2 <- function(id) {
  ns <- NS(id)
  tabPanel(
    title = "page2",
    value = "page2",
    tags$h1("Here is page 2.")
    )}

当然我这个navbarPage直接点击上面导航栏就可以跳转,做按钮是多余的,只是为了示例。

相关文章

  • Shiny 模块间通信

    想实现在页面1上点击按钮,跳转到页面2,每个页面作为一个module。 错误的写法: 模块之间的变量不共享,无法达...

  • 3.线程间通信

    软件都是由不同的模块组成一个系统,从而模块与模块间的通信,线程与线程间通信是经常碰到的。下面我们介绍了关于线程间通...

  • 模块间通信HttpClient

    sayHi(String... str) 可以实现可变参数,但是可变参数只能是参数的最后一个 ui门户模块 想请求...

  • Android 模块间通信

    参考:https://blog.csdn.net/lianwa88/article/details/7997395...

  • Android 模块化之路 模块间调用简易实现方案

    一、背景 还记得上一次分享的模块间通信和调用吗?Android 模块化之路 模块间通信在这个文章里面,我们说到,如...

  • rocketmq remoting 源码阅读笔记

    rocketmq网络部分的整体的架构 remoting 模块是 mq 的基础通信模块,理解通信层的原理对理解模块间...

  • electron主进程与渲染进程通信,webview与其加载页间

    1:进程间通信 进程间通信使用 ipcMain与ipcRenderer模块,参考:https://www.w3cs...

  • SPI机制

    SPI:由于业务模块进行了组件拆分,开发了基于SPI组件通信方式,用在模块间降低耦合,解决业务模块的通信问题。可以...

  • iOS Router原理篇

    前言: iOS强调模块化、组件化,讲究模块内高内聚,模块间低耦合。那么模块与模块之间的低耦合,就要求模块间的通信要...

  • 8.进程间通信与进程池

    进程间通信与进程池 进程间通信-Queue 通常利用multiprocessing模块的Queue实现多线程之间的...

网友评论

      本文标题:Shiny 模块间通信

      本文链接:https://www.haomeiwen.com/subject/zbuudltx.html