reagent/docs/0.8-upgrade.md

1.6 KiB

0.8 Upgrade guide

The necessary changes depend on what environment you target, and how you want to provide React.

Browser - Cljsjs

Using Reagent itself with Cljsjs packages doesn't require changes, other than making sure you depend on the latest Cljsjs React packages, if you have direct dependencies to them.

Browser - node modules

You can use :npm-deps and :install-deps compiler options to install the packages automatically.

If react, react-dom and create-react-class are available in node_modules directory, ClojureScript compiler will use these with Reagent. This doesn't depend on use of :npm-deps option! :npm-deps option is only about installing the dependencies, if packages are available in node_modules directory, they will be used.

You can use :process-shim compiler option to provide process.env.NODE_ENV constant which is used by JS code to enable development and production builds. ClojureScript compiler will automatically set this constant to production value when using :advanced optimizations. This enables the React production build.

NodeJS

Install react, react-dom and create-react-class npm packages, and ClojureScript should automatically use require to load React for Reagent.

Electron

???

React-native

https://github.com/drapanjanas/re-natal/issues/128

Common Problems

Mismatch with Cljsjs and npm packages

If you have one npm package installed, e.g. react, you also need to provide others (react-dom and create-react-class), else Cljsjs packages would be used for these, and packages from different sources don't work together.