lib/assets/javascripts/react_ujs.js in react-rails-2.4.2 vs lib/assets/javascripts/react_ujs.js in react-rails-2.4.3

- old
+ new

@@ -238,10 +238,13 @@ // This attribute holds JSON stringified props for initializing the component // example: `data-react-props="{\"item\": { \"id\": 1, \"name\": \"My Item\"} }"` PROPS_ATTR: 'data-react-props', + // This attribute holds which method to use between: ReactDOM.hydrate, ReactDOM.render + RENDER_ATTR: 'data-hydrate', + // If jQuery is detected, save a reference to it for event handlers jQuery: (typeof window !== 'undefined') && (typeof window.jQuery !== 'undefined') && window.jQuery, // helper method for the mount and unmount methods to find the // `data-react-class` DOM elements @@ -305,18 +308,19 @@ var node = nodes[i]; var className = node.getAttribute(ujs.CLASS_NAME_ATTR); var constructor = ujs.getConstructor(className); var propsJson = node.getAttribute(ujs.PROPS_ATTR); var props = propsJson && JSON.parse(propsJson); + var hydrate = node.getAttribute(ujs.RENDER_ATTR); if (!constructor) { var message = "Cannot find component: '" + className + "'" if (console && console.log) { console.log("%c[react-rails] %c" + message + " for element", "font-weight: bold", "", node) } throw new Error(message + ". Make sure your component is available to render.") } else { - if (typeof ReactDOM.hydrate === "function") { + if (hydrate && typeof ReactDOM.hydrate === "function") { ReactDOM.hydrate(React.createElement(constructor, props), node); } else { ReactDOM.render(React.createElement(constructor, props), node); } } \ No newline at end of file