Pure JSX
This is an opinionated helper around React that will allow you to have pure JSX files, beginning with any tag (e.g. <div>
). React import, and other dependency injection mechanisms, as well as a middle class between your component class and React.Component
is provided.
There is a built-in loader for WebPack, for the pure JSX files suffixed .jsx
.
In the view, you have access to a context which can contain any data. This is accompanied by a "query" object in WebPack. You also have access to state
and props
without needing to prepend this.
. The constructor is available as $
, so that static class members are referenced as $.member
. This is useful to inject dependent sub-components.
Usage
The component logic
// This should be the same for the entire app, and is reached from all viewsconst appContext = app: 'hello world' ; { super props view appContext ; thisstate = value: "example" ; }
The view
All properties in the context (above) will be exposed, if accompanied with the corresponding WebPack loader query (below).
{ app }: { state.value }
The WebPack loader
You specify the context variables in the query
object for the pure-jsx/loader
.
module: loaders: test : /\.jsx$/ include : "./app" // Your app root // Use webpack-combine-loaders to use this together with babel loader :
HOC (Higher-Order Component)
PureJSX can return a HOC of any component, e.g. if you want it to subclass a custom class (or React.PureComponent
). To do this, use the provided hoc
function:
// This should be the same for the entire app, and is reached from all viewsconst appContext = app: 'hello world' ; PureComponent { super props view appContext ; thisstate = value: "example" ; }