Я разрабатываю R-приложение с использованием библиотеки Shiny.Пользовательский интерфейс для приложения создается с помощью React.Для этого я yarn build
прикладываю React и копирую содержимое каталога public
в директорию www/
приложения Shiny.
Бэкенд (сервер) приложения Shiny должен прослушивать (наблюдать) такие события, какнажатие кнопок производится в пользовательском интерфейсе.Однако я заметил, что загрузка скрипта React нарушает связывание между бэкэндом и пользовательским интерфейсом.Обратите внимание на код - комментируя определенную строку, отвечающую за рендеринг пользовательского интерфейса React, переключает прослушивание щелчков на button#load
на внутренней стороне.
server.R
server <- function(input, output, session) {
observeEvent(input$load, {
print(10)
})
}
www/index.html
<!doctype html>
<html lang="en">
<head>
<script src="./js/jquery-3.3.1.min.js"></script>
<script src="shared/shiny.js"></script>
<title>Listening test</title>
</head>
<body>
<button class="action-button" id="load">Print 10</button>
<div id="root"></div>
<script src="./static/js/2.210fc6f9.chunk.js"></script>
<!-- When line below is commented out, listening to clicks works ->
<script src="./static/js/main.fd6ab614.chunk.js"></script>
<script>
$(document).on('shiny:connected', function (event) {
// Make sure the Shiny connection is established
Shiny.bindAll();
});
</script>
</body>
</html>
Можно ли вообще сделать пользовательский интерфейс приложения Shiny в React с наблюдением за сохраненными событиями?