React-Flexbox-Grid is a set of React components that implement flexboxgrid.css. It's built on top of some the trendiest proposals like CSS Modules (written in SASS), Webpack and ES6. The library harmoniously integrates with your Webpack workflow and it's easily customizable and very flexible.
http://roylee0704.github.io/react-flexbox-grid/
Although there are other ways to use React-Flexbox-Grid, the recommended way is to create a Webpack workflow with Babel Loader, CSS Loader and SASS Loader. A good starting point is react-flexbox-grid-example, be sure to also checkout webpack config in the example.
You must configure webpack to load flexboxgrid with CSS Modules, otherwise components from react-flexbox-grid will just have empty class names.
To do so, first add the loaders required as devDependencies
:
npm i -D npm style-loader css-loader
Then configure the loaders:
{
test: /\.css$/,
loader: 'style!css?modules',
include: /flexboxgrid/,
}
If you have another loader which affects flexboxgrid
, exclude it from that loader. In this case, also using postcss
loader:
{
test: /\.css$/,
loader: 'style!css!postcss',
include: path.join(__dirname, 'node_modules'), // oops, this also includes flexboxgrid
exclude: /flexboxgrid/, // so we have to exclude it
}
Because webpack stacks loaders together, it doesn't override them.
Note: If you need isomorphic support see roylee0704#28 (comment).
Looking for example to use react-flexbox-grid
? Head over to react-flexbox-grid-example.
React-Flexbox-Grid can be installed as an npm package:
npm i -S react-flexbox-grid
It has peer dependency requirements on classnames
and flexboxgrid
modules, which can be installed and added to the package manifest like so:
npm i -S classnames flexboxgrid
Once you have the workflow ready, you can just require and use the components:
import React from 'react'
import { Grid } from 'react-flexbox-grid/lib/index'
React.render(<Grid />, document.querySelector('#main'))
The previous code creates a React container component based on React Flexbox Grid
container. It's important to notice that requiring a module from the exposed root of the package will import the SASS of the component.
I encourage you to work with webpack but if you want to use React Flexbox Grid
in an old fashioned way, you must generate a build with all the css and javascript and include it in your index.html
. Then you can use the components exposed in the window
object.
const {Grid, Row, Col} = require('react-flexbox-grid');
const App = React.createClass({
render() {
return (
<Grid>
<Row>
<Col xs={6} md={3}>Hello, world!</Col>
</Row>
</Grid>
);
}
});
Roy Lee | Helder Santana | Matija Marohnić |
MIT