rsnext/examples/with-refnux/README.md
Shu Uesugi 6804039e94 Make example READMEs more consistent (#10124)
* npx create → npm init

* Fix inconsistent instructions

* Update amp-first

* Update with-graphql-react

* with-firebase-cloud-messaging

* Update with-higher-order-component

* change create-next-app url

* Update create-next-app instruction

* Update instructions to use npm instead of npx

* Move "the idea behind the example" to top

* Rename

* Rename

* Update contributing.md with a README template
2020-01-16 23:23:56 +01:00

2.5 KiB

Refnux example

This example, just like with-redux and with-mobx examples, shows how to manage a global state in your web-application. In this case we are using refnux which is an alternative, simpler, purely functional store state manager.

Deploy your own

Deploy the example using ZEIT Now:

Deploy with ZEIT Now

How to use

Using create-next-app

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

npm init next-app --example with-refnux with-refnux-app
# or
yarn create next-app --example with-refnux with-refnux-app

Download manually

Download the example:

curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/with-refnux
cd with-refnux

Install it and run:

npm install
npm run dev
# or
yarn
yarn dev

Deploy it to the cloud with now (download):

now

Notes

We have two very similar pages (page1.js, page2.js). They both

  • show the current application state, including a simple counter value
  • have a link to jump from one page to the other
  • have an 'increment' button to increment the state of the counter (it triggers the counterIncrement action)

When running the example, please, increment the counter and note how moving from page 1 to page 2 and back the state is persisted. Reloading any of the pages will restore the initial state coming from the server.

Implementation details

Each page uses withRefnux helper which wraps the page in a Provider component. Page components are connected to the state using refnux connect function.

In the store/ directory you can see a simple implmentation of

  • a getInitialstate function that returns the initial state of the store. It's used only on SSR
  • a counterIncrement action that increments the counter state whe user pushes the corresponding button
  • a setTitle action that's used to set page title during pages getInitialProps

If you have any comment / question / pull requests please refer to the original repository where this example is developed and maintained.