react-rails-ujs
Version:
mounting components built with webpack (compatible with react-rails)
75 lines (50 loc) • 1.99 kB
Markdown
//badge.fury.io/js/react-rails-ujs.svg)](http://badge.fury.io/js/react-rails-ujs)
[](https://npmjs.org/package/react-rails-ujs)
This npm package is replacement for [react-rails](https://github.com/reactjs/react-rails)
when assets pipeline is completely disabled and replaced with webpack bundles.
npm i --save react-rails-ujs
Add react_component helper
module ApplicationHelper
def react_component(name, props = {}, options = {}, &block)
html_options = options.reverse_merge(data: {
react_class: name,
react_props: (props.is_a?(String) ? props : props.to_json)
})
content_tag(:div, '', html_options, &block)
end
end
Render components into rails views
<%= react_component('Message', text: 'Hello react-rails-ujs') %>
Mount webpack bundled components
import { mountComponents } from 'react-rails-ujs';
import { Message } from './components/Message';
mountComponents({
Message,
});
import React from 'react';
import { AppContainer } from 'react-hot-loader';
import { mountComponents } from 'react-rails-ujs';
import { Message } from './components/Message';
const render = (component, props) => (
<AppContainer><component {...props}/></AppContainer>
);
mountComponents({
Message,
}, module.hot ? { render } : {});
import React from 'react';
import { Provider } from 'react-redux'
import { mountComponents } from 'react-rails-ujs';
import createStore from './store/createStore';
import { Message } from './components/Message';
const store = createStore();
const render = (component, props) => (
<Provider store={store}><component {...props}/></Provider>
);
mountComponents({
Message,
}, { render });
[![npm version](https: