Template providing a working React Native setup for ClojureScript with Krell and Storybook
npm install react-native-template-cljs-krell-storybook``bash
npx react-native init YourProjectName --template react-native-template-cljs-krell-storybook
bundle && npx pod-install # For iOS
`
`bash
yarn cljs:build
yarn start
`
If you run into compatibility trouble on Apple Silicon, dependencies can be installed by running arch -x86_64 pod install inside /ios folder.
JavaScript components and Storybook tests are in js/, named Component.js andComponent.stories.js respectively. Run yarn storybook:run for an interactiveyarn storybook:run
environment showing the look and feel of your components; they will live-reload
when edited. (Note that will overwrite the Krell-generatedindex.js, you will need to run yarn cljs:build or yarn cljs:repl beforeyarn start
running again to get back to your app).
You can require your JS components in your ClojureScript views with
`clojure`
(def component-name
(r/adapt-react-class
(.-default (js/require "../js/ComponentName.js"))))
Note the path is just ../`, regardless of where in your ClojureScript directory
hierarchy you are working from.
Clojure, with its functional core and immutable data structures, is ideally
suited to managing state in user applications. ClojureScript extends this reach
anywhere JavaScript can go, and React Native puts a performant, well-supported,
JS environment on mobile and desktop devices with a deep ecosystem of usable
libraries.
When it comes to building ClojureScript apps on React Native, the majority of
the benefit comes from lifting state out of the land of JavaScript and into
a functional library like Reagent. Design of components can be left to
JavaScript, functioning essentially as markup, with tools like Storybook
providing quick feedback on layout. This template provides the dependencies
and plumbing to connect these three main tools.
Bug reports, pull requests, and additions to the wiki
are all extremely welcome. The biggest hurdle to getting started with
ClojureScript on React Native is "it works on my machine." Eliminating these
issues and documenting the solutions will help everyone get on with
writing useful code.
* ClojureScript in the Age of Typescript -- David Nolen
* CLJSRN.org
* Krell
* Storybook