|
4 | 4 |
|
5 | 5 | This package implements an opinionated set of bindings over [React](https://reactjs.org), optimizing for correctness and simplifying basic use cases.
|
6 | 6 |
|
| 7 | +_A note about React hooks: Hooks are arriving in stable React soon. The API presented here is the more traditional `setState`+lifecycles style React's had for a long time. If you'd like to experiment with the hooks API in react-basic, have a look at [react-basic-hooks](https://github.com/spicydonuts/purescript-react-basic-hooks). It can be installed and used along side this library, but don't forget it's a preview release!_ |
| 8 | + |
7 | 9 | ## Features
|
8 | 10 |
|
9 | 11 | - All React DOM elements and attributes are supported (soon, events are a work in progress).
|
10 | 12 | - An intuitive API for specifying props - simple records, no arrays of key value pairs.
|
11 | 13 | - Attributes are optional, but type-checked. It is a type error to specify `href` as an integer, for example.
|
12 |
| -- An action/update pattern for local component state, inspired by [ReasonReact](https://reasonml.github.io/reason-react/). |
| 14 | +- Both `setState` and an action/update pattern for local component state, inspired by [ReasonReact](https://reasonml.github.io/reason-react/). |
13 | 15 | - React lifecycles are available, but not in your way when you don't need them.
|
14 |
| -- Typeclasses, like `Eq props`, can be used in component definitions. |
15 | 16 |
|
16 | 17 | ## Getting Started
|
17 | 18 |
|
18 | 19 | You can install this package using Bower:
|
19 | 20 |
|
20 | 21 | ```sh
|
21 |
| -bower install purescript-react-basic |
| 22 | +bower install --save purescript-react-basic |
22 | 23 | ```
|
23 | 24 |
|
24 | 25 | Or clone/fork the [starter project](https://github.com/lumihq/react-basic-starter).
|
25 | 26 |
|
26 |
| -See [the documentation](https://pursuit.purescript.org/packages/purescript-react-basic/docs/React.Basic) for a detailed overview, or take a look at one of the examples: |
| 27 | +See [the documentation](https://pursuit.purescript.org/packages/purescript-react-basic/docs/React.Basic) for an overview of the API or take a look at these examples: |
27 | 28 |
|
28 |
| -- [A Counter](./examples/counter/src/Counter.purs) |
| 29 | +- [A counter](./examples/counter/src/Counter.purs) |
29 | 30 | - [A controlled input](./examples/controlled-input/src/ControlledInput.purs)
|
30 | 31 | - [Components](./examples/component/src/ToggleButton.purs) in [components](./examples/component/src/Container.purs)
|
| 32 | +- [Using action/update](./examples/actions/src/Actions.purs) |
| 33 | + |
| 34 | +## Migrating from v7 to v8 |
| 35 | + |
| 36 | +v8 removes the required `update` function from the component spec and replaces `send self Action` with the `self.setState` API. Existing components using `update` can create a `send` function using the `runUpdate` function added in v8. See [the actions example](./examples/actions/src/Actions.purs) for an example of this. Alternatively, [this comment](https://github.com/lumihq/purescript-react-basic/pull/73#issuecomment-456486249) shows a few other possible upgrade paths. |
31 | 37 |
|
32 |
| -## Migrating from v2 or v3 |
| 38 | +## Migrating from v2/v3 |
33 | 39 |
|
34 | 40 | `React.Basic.Compat` is a new (but deprecated) module. It matches most of the old API and types (except `setStateThen` and `isFirstMount`) to make upgrading easier and more gradual. You can find `^import\sReact\.Basic\b` and replace with `import React.Basic.Compat`, upgrade the package version, and proceed from there one component at a time (or only new components). See the documentation link above for more info on the new API.
|
0 commit comments