All Projects → sumul → fractal-react-adapter

sumul / fractal-react-adapter

Licence: MIT License
Use React as the template engine for Fractal (http://fractal.build) components.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to fractal-react-adapter

laravel-transformer-maker
Quick way to create Fractal Transformers.
Stars: ✭ 29 (+38.1%)
Mutual labels:  fractal
react-gearbox
⚙️📦 Gearbox - Renderless state provisioning and composition
Stars: ✭ 31 (+47.62%)
Mutual labels:  fractal
fraqtive
Generator of the Mandelbrot family fractals.
Stars: ✭ 21 (+0%)
Mutual labels:  fractal
fractal-starter-kit
Starter kit for Fractal with SCSS, Webpack, XO, sass-lint and Gulp
Stars: ✭ 22 (+4.76%)
Mutual labels:  fractal
cas
Cellular Automata Simulator
Stars: ✭ 22 (+4.76%)
Mutual labels:  fractal
pycontextfree
Pythonic generative art tool
Stars: ✭ 32 (+52.38%)
Mutual labels:  fractal
Mandelbrot-set-explorer
An interactive Mandelbrot set, made with Python3 and Tkinter
Stars: ✭ 31 (+47.62%)
Mutual labels:  fractal
blender-osl-shader
procedural textures for blender (open shading language)
Stars: ✭ 22 (+4.76%)
Mutual labels:  fractal
aframe-lsystem-component
L-System/LSystem component for A-Frame to draw 3D turtle graphics. Using Lindenmayer as backend.
Stars: ✭ 33 (+57.14%)
Mutual labels:  fractal
immerx-state
Reactive, fractal and no-nonsense state management with Immer
Stars: ✭ 19 (-9.52%)
Mutual labels:  fractal
gis-snippets
Some code snippets for GIS tasks
Stars: ✭ 45 (+114.29%)
Mutual labels:  fractal
gpu mandelbrot
Interactive Mandelbrot set on GPU with Python
Stars: ✭ 33 (+57.14%)
Mutual labels:  fractal
dva-boot
🌱 使用CRA(create-react-app v2) 构建的react dva 2 脚手架 支持动态路由、接口数据模拟、按功能分层、并且包含诸多实用的小组件
Stars: ✭ 79 (+276.19%)
Mutual labels:  fractal
wasabi
A Buddhabrot explorer based on wabisabi, but with a more affectionate name.
Stars: ✭ 17 (-19.05%)
Mutual labels:  fractal
SwiftUI-Fractals
The Sierpinski carpet, triangle, and a fractal tree using SwiftUI
Stars: ✭ 22 (+4.76%)
Mutual labels:  fractal
styleguide-starterkit
A starterkit to create styleguides with Fractal and Webpack.
Stars: ✭ 35 (+66.67%)
Mutual labels:  fractal
xirho
xirho is a simple generalized iterated function system plotter.
Stars: ✭ 16 (-23.81%)
Mutual labels:  fractal
ElectricSheep WebGL
WebGL Electric Sheep Renderer
Stars: ✭ 14 (-33.33%)
Mutual labels:  fractal
Algorithms
Free hands-on course with the implementation (in Python) and description of several computational, mathematical and statistical algorithms.
Stars: ✭ 117 (+457.14%)
Mutual labels:  fractal
restate
A redux fractal state library 🕷
Stars: ✭ 55 (+161.9%)
Mutual labels:  fractal

React Adapter for Fractal

This adapter lets you use React as a template engine in Fractal. It's based on Fractal's Handlebars adapter. This adapter aims to maintain a React flavor rather than achieve complete feature parity with the Handlebars adapter. The goal is to facilitate writing React components that can easily be used in other projects.

Installation

Install the adapter via NPM:

npm i --save fractal-react-adapter

Plug it into your fractal.js file like so:

const reactAdapter = require('fractal-react-adapter')();
fractal.components.engine(reactAdapter);
fractal.components.set('ext', '.jsx');

The adapter uses Babel to compile React components via babel-register (which hooks into require or import and automatically routes those files through Babel). By default, babel-register is configured to compile .jsx files and use the react and es2015 Babel presets, but you can override these with any valid babel-register config (see Configuration below).

// Default babel-register config
{
  extensions: [".jsx"],
  presets: ['es2015', 'react'],
}

The adapter also uses babel-plugin-module-resolver to expose Fractal's component handles as node module names. This allows you to move a component around in the file system without worrying about rewriting your imports.

import Button from '@button';
const Button = require('@button');

Configuration

These options can be overridden when the adapter is set up.

  • babelConfig: any valid configuration options for babel-register
  • renderMethod: 'renderToStaticMarkup' or 'renderToString' (see ReactDOMServer)
const reactAdapter = require('fractal-react-adapter')({
  babelConfig: {
    presets: ['es2015', 'react', 'stage-0']
  },
  renderMethod: 'renderToString',
});

Example components

A simple button component

import React from 'react';
 
class Button extends React.Component {
  render() {
    return <button className={this.props.className}>{this.props.children}</button>
  }
}

module.exports = Button;

A card component that uses the button

import React from 'react';
import Button from '@button'

class Card extends React.Component {
  render() {
    return (
      <div className="card">
        <h1>{this.props.title}</h1>
        <p>{this.props.description}</p>
        <Button className="orange">{this.props.buttonText}</Button>        
      </div>
    );
  }
}

module.exports = Card;
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].