Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/reactive-python/reactpy-jupyter

It's React, but in Jupyter
https://github.com/reactive-python/reactpy-jupyter

jupyter jupyter-lab jupyter-widgets reactpy

Last synced: 16 days ago
JSON representation

It's React, but in Jupyter

Awesome Lists containing this project

README

        

# reactpy-jupyter

A client for [ReactPy](https://github.com/reactive-python/reactpy) implemented using Jupyter widgets

## Try It Now!

Check out some live examples by clicking the badge below:


Binder

## Getting Started

To install use `pip`:

```
pip install reactpy_jupyter
```

## Usage

Once you're done [getting started](#getting-started), you can author and display ReactPy
layouts natively in your Jupyter Notebook:

```python
import reactpy

@reactpy.component
def ClickCount():
count, set_count = reactpy.hooks.use_state(0)
return reactpy.html.button(
{"onClick": lambda event: set_count(count + 1)},
[f"Click count: {count}"],
)

ClickCount()
```

You can also turn an `reactpy` element constructor into one that returns an `ipywidget` with
the `reactpy_juptyer.to_widget` function. This is useful if you wish to use ReactPy in combination
with other Jupyter Widgets as in the following example:

```python
ClickCountWidget = reactpy_jupyter.to_widget(ClickCount)
ipywidgets.Box(
[
ClickCountWidget(),
ClickCountWidget(),
]
)
```

For a more detailed introduction check out this live demo here:


Binder

## Development Installation

For a development installation (requires [Node.js](https://nodejs.org) and [Yarn version 1](https://classic.yarnpkg.com/)),

$ git clone https://github.com/reactive-python/reactpy-jupyter.git
$ cd reactpy-jupyter
$ pip install -e .

To automatically re-build and refresh Jupyter when making changes start a Vite dev server:

$ npx vite

Then, before importing `reactpy_jupyter` set the following environment variable:

```python
import os
os.environ["REACTPY_JUPYTER_DEV"] = "1"
import reactpy_jupyter
```