传递给嵌套模块的按钮无法正常工作

问题描述

出于某种原因,我需要嵌套模块。我将按钮传递给嵌套模块 mod_coordinates_server,但是当我单击按钮时,地图上没有显示点。我在这里使用 reactive 并且按钮正确传递 - 当您取消注释 print(btn()) (在 observeEvent 中)时,您会看到值正确返回到控制台。这意味着按钮可以正常工作。那么为什么它不适用于积分呢?命名空间有问题吗?

以下工作示例:

library(shiny)
library(mapboxer)
library(dplyr)
library(sf)


moduleServer <- function(id,module) {
    callModule(module,id)
}

# UI #
mod_btn_UI <- function(id) {
    
    ns <- NS(id)
    tagList(
        actionButton(ns("btn"),"Click me!"),mod_coordinates_UI(ns("proxyMap"))
    )
}

# Server #
mod_btn_server <- function(id){
    moduleServer(id,function(input,output,session) {

        btn <- reactive({input$btn})
        mod_coordinates_server("proxyMap",btn)
        
    })
}


# Module Coordinates

mod_coordinates_UI <- function(id) {
    
    ns <- NS(id)
    tagList(
        mapboxerOutput(ns("map"))
    )
}


mod_coordinates_server <- function(id,btn){
    moduleServer(id,session) {
        
        ns <- NS(id)
        
        coords <- quakes %>%
            sf::st_as_sf(coords = c("long","lat"),crs = 4326)
        
        output$map <- mapboxer::renderMapboxer({
            mapboxer::mapboxer(
                style = mapboxer::basemaps$Mapbox$light_v10,center = c(174.387636,-33.543557),pitch = 5,padding = 0,zoom = 3)
        })
        
        observeEvent(btn(),{
            # print(btn())
            mapboxer::mapboxer_proxy(ns("map")) %>%
                mapboxer::add_circle_layer(
                    id = "xyz",source = mapboxer::as_mapbox_source(coords),circle_color = "#952444",circle_opacity = 0.7,circle_radius = 6
                ) %>%
                mapboxer::update_mapboxer()
        })        
       
    })
 }


# FINAL App #

ui <- fluidPage(
    
    tagList(
        mod_btn_UI("test-btn"))
)

server <- function(input,session) {
    
    mod_btn_server("test-btn")
    
}

shinyApp(ui = ui,server = server)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)