Git Product home page Git Product logo

reason-react's Introduction

ReasonReact - ReasonML / BuckleScript bindings for React.js

npm version npm PRs Welcome contributors discord twitter

ReasonReact is a safer, simpler way to build React components. You get a great type system with an even better developer experience. Why choose ReasonReact? Read more here

ReasonReact is just React.js under the hood. This makes it super easy to integrate with your current Next.js, Create React App, JavaScript, Flowtype or TypeScript project. Learn more about getting started here

Watch Ricky Vetter's Reason Conf talk, "Why React is Just Better in Reason" to learn more about how Facebook & Messenger are using ReasonReact

Watch Jordan Walke's Reason Conf talk, "React to the Future" to learn more about the future of ReasonML and React

Example

/* Greeting.re */

[@react.component]
let make = (~name) => <h1> {React.string("Hello " ++ name)} </h1>

See all of our examples here. For a full application, check out reason-react-hacker-news.

Getting Started

BuckleScript is how your ReasonML code gets compiled to Javascript. Every project that uses BuckleScript will have a bsconfig.json file (the same way you'd have tsconfig.json in a Typescript project) with project specific settings.

You can install BuckleScript globally or keep it project specific by adding it as a devDependency:

yarn global add bs-platform

# or npm
npm install --global bs-platform

If you install BuckleScript globally, you can quickly generate a ReasonReact project template (similar to create-react-app):

bsb -init my-react-app -theme react-hooks
cd my-react-app && npm install && npm start

# in another tab
npm run server

If you're interested in adding ReasonReact to your current project, it's a simple 2 step process:

yarn add bs-platform --dev --exact

# or npm
npm install bs-platform -D -S

Add the appropriate script tags to package.json:

"scripts": {
  "re:build": "bsb -make-world -clean-world",
  "re:watch": "bsb -make-world -clean-world -w"
}

Copy the bsconfig.json file from our docs located here

Then add some files somewhere (don't forget to change bsconfig.json, if needed).

Using Your Favorite Javascript Libraries

The same way that TypeScript has type annotations, we have bindings. Bindings are libraries that allow you to import a popular project (like lodash) or to import your own local file. ReasonReact is in fact an example of a binding!

Documentation

See https://reasonml.github.io/reason-react

Contribute

We welcome all contributors! Anything from docs to issues to pull requests. Please help us ๐Ÿ˜„

git clone https://github.com/reasonml/reason-react.git
cd reason-react
npm install
npm start

See the README inside src for more info!

Editor Support

Looking for syntax highlighting for your favorite editor? Check out ReasonML Editor Plugins

Friends of ReasonReact

  • genType - genType automatically generates bindings for your TypeScript / vanilla JS code.
  • reason-react-native - ReasonML / Bucklescript bindings for React Native. Allows you to use Reason to build an iOS, Android or Web app!
  • reasonml.org - An effort by the Reason Association to improve documentation for ReasonML & BuckleScript
  • redex.github.io - Find bindings for your favorite libraries here
  • ReasonTown Podcast - ReasonML Podcast
  • ReasonConf Youtube Reason Conf on Youtube

reason-react's People

Contributors

chenglou avatar rickyvetter avatar bloodyowl avatar sanderspies avatar cknitt avatar peterpme avatar cristianoc avatar jchavarri avatar jordwalke avatar anmonteiro avatar johnridesabike avatar psb avatar oleglustenko avatar cullophid avatar glennsl avatar jaredly avatar agtlucas avatar moroshko avatar lessp avatar dylanirlbeck avatar thangngoc89 avatar elijahkagan avatar phated avatar alex35mil avatar bodhish avatar iwankaramazow avatar jaredpalmer avatar sgny avatar moox avatar af avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.