• Stars
    star
    409
  • Rank 105,709 (Top 3 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 5 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Run your React code on the go

React Runner

Run your React code on the go https://react-runner.vercel.app

Features

  • Inline element
  • Function component
  • Class component, with class fields support
  • Composing components with render or export default
  • Server Side Rendering
  • import statement
  • Multi files
  • Typescript

With React Runner, you can write your live code in the real world way, check out Hacker News in react-runner vs in real world, with the same code

You can even build your own async runner to support dynamic imports, try Play React

Install

# Yarn
yarn add react-runner

# NPM
npm install --save react-runner

Options

  • code string, required the code to be ran
  • scope object globals that could be used in code

Usage

import { Runner } from 'react-runner'

const element = <Runner code={code} scope={scope} onRendered={handleRendered} />

or use hook useRunner with cache support

import { useRunner } from 'react-runner'

const { element, error } = useRunner({ code, scope })

import statement and multi files

import { importCode } from 'react-runner'
import * as YourPkg from 'your-pkg'

const baseScope = {
  /* base globals */
}

const scope = {
  ...baseScope,
  // scope used by import statement
  import: {
    constants: { A: 'a' },
    'your-pkg': YourPkg,
    './local-file': importCode(localFileContent, baseScope),
  },
}

then in your live code you can import them

import { A } from 'constants'
import Foo, { Bar } from 'your-pkg'
import What, { Ever } from './local-file'

export default function Demo() {
  /* render */
}

Browser support

"browserslist": [
  "Chrome > 61",
  "Edge > 16",
  "Firefox > 60",
  "Safari > 10.1"
]

Resources

react-live-runner

react-runner is inspired by react-live heavily, I love it, but I love arrow functions for event handlers instead of bind them manually as well as other modern features, and I don't want to change my code to be compliant with restrictions, so I created this project, use Sucrase instead of Bublé to transpile the code.

If you are using react-live in your project and want a smooth transition, react-live-runner is there for you which provide the identical way to play with, and react-live-runner re-exports react-runner so you can use everything in react-runner by importing react-live-runner

import {
  LiveProvider,
  LiveEditor,
  LiveError,
  LivePreview,
} from 'react-live-runner'

...
<LiveProvider code={code} scope={scope}>
  <LiveEditor />
  <LivePreview />
  <LiveError />
</LiveProvider>
...

or hooks for better custom rendering

import { useLiveRunner, CodeEditor } from 'react-live-runner'

const { element, error, code, onChange } = useLiveRunner({
  initialCode,
  scope,
  transformCode,
})

...
<>
  <CodeEditor value={code} onChange={onChange}>
  <div>{element}</div>
  {error && <pre>{error}</pre>}
</>
...

or use react-runner directly

import { useState, useEffect } from 'react'
import { useRunner } from 'react-runner'

const [code, onChange] = useState(initialCode)
const { element, error } = useRunner({ code, scope })

useEffect(() => {
  onChange(initialCode)
}, [initialCode])

...
<>
  <textarea value={code} onChange={event => onChange(event.target.value)}>
  <div>{element}</div>
  {error && <pre>{error}</pre>}
</>
...

Check the real world usage here https://github.com/nihgwu/react-runner/blob/master/website/src/components/LiveRunner.tsx

License

MIT © Neo Nie

More Repositories

1

react-native-dva-starter

a React Native starter powered by dva and react-navigation
JavaScript
641
star
2

react-native-sudoku

a sudoku game written in React Native
JavaScript
641
star
3

hexo-hey

an admin plugin for hexo
JavaScript
208
star
4

iZhihu

Zhihudaily powered by Node.js
JavaScript
150
star
5

react-native-pie

Pie chart for React Native
JavaScript
107
star
6

create-slots

Bring slots to React component
TypeScript
93
star
7

Nevermore

a shadowsocks client powered by node-webkit
JavaScript
90
star
8

stickyard

Make your React component sticky the easy way
JavaScript
83
star
9

NeoReader

one reader for all
73
star
10

react-native-flanimatedimage

FLAnimatedImage for React Native
Objective-C
51
star
11

react-texty

A straight forward text component with tooltip support when it's truncated
JavaScript
20
star
12

seawind

TypeScript
10
star
13

react-native-leancloud

a react native component for leancloud javascript-sdk
Java
8
star
14

storybook-addon-react-runner

Storybook addon to provide react live preview powered by react-runner
JavaScript
4
star
15

AskWeather

a weather app written in React Native
CSS
2
star
16

react-esm

run React + TypeScript App without building tools
JavaScript
2
star
17

gatsby-remark-emoji-unicode

Gatsby plugin to convert emoji code to unicode
JavaScript
2
star
18

gatsby-using-dva

Gatsby example site that shows use of Dva
CSS
2
star
19

react-native-timer

a timer component for react-native
JavaScript
1
star
20

play-react

TypeScript
1
star
21

dsb

dead simple blog, based on nodejs, expressjs, ejs, marked
JavaScript
1
star
22

zhihudaily

Node.js 版知乎日报
1
star