Skip to content

ferp-js/ferp-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

npm version Build Status Dependencies Known Vulnerabilities Join the chat at https://gitter.im/mrozbarry/ferp

@ferp/react

Ferp is the easiest, functional-reactive, zero dependency javascript app framework for nodejs and modern browsers.

And now it's even easier to use with react!

Installing

npm install --save ferp @ferp/react

Or grab it from unpkg

<script src="https://unpkg.com/ferp"></script>
<script src="https://unpkg.com/@ferp/react"></script>
<script>
  const { ferp, ferpReact } = window;
  const { AppProvider, connect } = ferpReact;
</script>

Creating an app

Here's an app that infinitely adds a counter, and logs it.

import React from 'react';
import { effects } from 'ferp';
import { AppProvider, connect } from '@ferp/react';

const Counter = connect(({ state, dispatch }) => (
  <div className="counter">
    <section className="counter-container">
      <span className="counter-number">{state.count}</span>
      <button className="counter-button" onClick={() => dispatch({ type: 'INCREMENT' })}>
        +
      </button>
      <button className="counter-button" onClick={() => dispatch({ type: 'DECREMENT' })}>
        -
      </button>
    </section>
  </div>
));

const initialState = {
  count: 0,
};

const update = (message, state) => {
  switch (message.type) {
    case 'INCREMENT':
      return [{ ...state, count: state.count + 1 }, effects.none()];

    case 'DECREMENT':
      return [{ ...state, count: state.count - 1 }, effects.none()];

    default:
      return [state, effects.none()];
  }
};

render(
  <AppProvider
    init={[initialState, effects.none()]}
    update={update}
  >
    <Counter />
  </AppProvider>,
  document.body,
);

More docs

Still have questions?

  • Open an issue, we're happy to answer any of your questions, or investigate how to fix a bug.
  • Join us on reddit, show off what you're doing, post tutorials, or just hang out, but keep things ferp related please.
  • Chat with us on gitter, we'll try to be quick to respond.