AsyncProps for React Router
Co-located data loading for React Router apps. Data is loaded before the new screen renders. It is designed to be both a useful solution for many apps, as well as a reference implementation for integrating data with React Router (stuff like redux, relay, falcor etc).
Docs & Help
For questions and support, please visit our channel on Reactiflux or Stack Overflow. The issue tracker is exclusively for bug reports and feature requests.
Installation
Using npm:
$ npm install async-props
Then with a module bundler like webpack, use as you would anything else:
// using an ES6 transpiler, like babel
The UMD build is also available on npmcdn:
You can find the library on window.AsyncProps
.
Notes
This is pre-release, it's pretty close though. If you are using it then you are a contributor. Please add tests with all pull requests.
Usage
Component // 1. define a `loadProps` static method static { } { // 2. access data as props :D const tacos = thispropstacos return <div> <ul> tacos </ul> </div> } // 3. Render `Router` with AsyncProps middleware
Server
app { return ` <!doctype html> <html> <!-- etc. ---> <body> <div id="app"></div> <!-- its a string --> </body> </html> `}
API
setCustomCreateScriptTagMethod
You can use custom createScriptTag(json)
function to escape html symbols json for example.
By default, AsyncProps use:
{ return `<script>__ASYNC_PROPS__ = </script>`}
You can specify your own function:
As you see, you function should return '<script>__ASYNC_PROPS__ =' + some_json_with_optional_wrapping + '</script>'
setCustomStringifyPropsMethod
You can use custom stringifyProp(propsArray)
function to minify json on production for example.
By default, AsyncProps use:
{ return JSON}
You can specify your own function:
As you see, you function should String, that you can parse on client.
Please refer to the example, as it exercises the entire API. Docs will come eventually :)