reactR
provides a set of convenience functions for using
React
in R
with htmlwidget
constructor templates and local JavaScript
dependencies. The React
ecosystem is rich with components
that can enhance R
web and Shiny apps.
scaffoldReactWidget()
helps build htmlwidgets
to integrate these React
components as R
htmlwidgets
. scaffoldReactShinyInput()
does
the same for Shiny
inputs. The local dependency functions
are modeled after the html_dependency_*
functions from
RStudio’s rmarkdown
package.
You can install reactR from CRAN with
install.packages("reactR")
. For the development version,
please use devtools
as shown below.
# install.packages("devtools")
::install_github("react-R/reactR") devtools
To wrap a React
component as an htmlwidget
,
please see the tutorial htmlwidgets
with reactR. Also, there are a variety of examples in the react-R Github organization.
reactable
is a
very well-built htmlwidget
leveraging this
functionality.
htmlwidgets
built with reactR
work well in
Shiny as outputs. In version 0.4.0
Alan Dipert has added
the ability to easily create React-based official Shiny
inputs with helpers and scaffolds. Please see the tutorial
for more details.
Below are examples of using reactR
directly.
library(reactR)
library(htmltools)
browsable(tagList(
$div(id = "app"),
tags$script(
tags"
ReactDOM.render(
React.createElement(
'h1',
null,
'Powered by React'
),
document.getElementById('app')
)
"
),#add core-js first to work in RStudio Viewer
html_dependency_corejs(),
html_dependency_react()
))
reactR
uses the V8
package if available to
transform JSX
and ES2015
code with
babel
.
library(reactR)
library(htmltools)
browsable(
tagList(
$div(id = "app"),
tags$script(
tagsbabel_transform('ReactDOM.render(<h1>Powered By React/JSX</h1>,document.getElementById("app"))')
),# add core-js shim first for React in older versions of RStudio Viewer
#html_dependency_corejs(),
html_dependency_react()
) )
We welcome contributors and would love your participation. Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by the terms.