rsnext/examples/with-reasonml-todo
Craig Wheeler 57426a2849
Update Examples to use React 18 (#42027)
This PR updates the minimum version of React used by examples from 17.0.2 to 18.2.0.

Fixes #41975

## Bug

- [x] Related issues linked using `fixes #41975`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see `contributing.md`

## Documentation / Examples

- [x] Make sure the linting passes by running `pnpm build && pnpm lint`
- [x] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
2022-10-28 17:43:20 +00:00
..
bindings New Example: with-reasonml-todo(#7346) 2019-05-23 16:48:13 -05:00
components New Example: with-reasonml-todo(#7346) 2019-05-23 16:48:13 -05:00
pages New Example: with-reasonml-todo(#7346) 2019-05-23 16:48:13 -05:00
.babelrc Include all files in Prettier (#17050) 2020-09-14 02:53:19 +00:00
.gitignore Update default gitignore templates (#39051) 2022-07-26 20:08:40 -05:00
bsconfig.json New Example: with-reasonml-todo(#7346) 2019-05-23 16:48:13 -05:00
next.config.js upgrade next-transpile-modules to latest everywhere (#10607) 2020-02-20 12:43:55 +01:00
package.json Update Examples to use React 18 (#42027) 2022-10-28 17:43:20 +00:00
README.md Update pnpm create next-app for latest pnpm 6 and 7 (#37254) 2022-05-27 21:21:40 +00:00

Example app using ReasonML & ReasonReact components

This example builds upon the original with-reasonml example to show how a global state object can be used to track state across page within the application.

It is intended to show how to build a simple, stateful application using hooks without the added complexity of a redux type library.

This example features:

  • An app that mixes together JavaScript and ReasonML components and functions
  • An app with two pages which has a common Counter component
  • That Counter component maintain the counter inside its module. This is used primarily to illustrate that modules get initialized once and their state variables persist in runtime

Deploy your own

Deploy the example using Vercel:

Deploy with Vercel

How to use

Execute create-next-app with npm, Yarn, or pnpm to bootstrap the example:

npx create-next-app --example with-reasonml-todo with-reasonml-app
# or
yarn create next-app --example with-reasonml-todo with-reasonml-app
# or
pnpm create next-app --example with-reasonml-todo with-reasonml-app

Deploy it to the cloud with Vercel (Documentation).

Recommendation:

Run BuckleScript build system bsb -w and next -w separately. For the sake of simple convention, npm run dev run both bsb and next concurrently. However, this doesn't offer the full colorful and very, very, veeeery nice error output experience that ReasonML can offer, don't miss it!

There are 2 convenience scripts to facilitate running these separate processes:

  1. npm run dev:reason - This script will start the ReasonML toolchain in watch mode to re-compile whenever you make changes.
  2. npm run dev:next - This script will start the next.js development server so that you will be able to access your site at the location output by the script. This will also hot reload as you make changes.

You should start the scripts in the presented order.