Sha256: 530e203674f91eef08e6d960b363bfc6e5054b1b127375f3db221cc7bff6ebbc
Contents?: true
Size: 1016 Bytes
Versions: 2
Compression:
Stored size: 1016 Bytes
Contents
module React module Rails module ViewHelper # Render a UJS-type HTML tag annotated with data attributes, which # are used by react_ujs to actually instantiate the React component # on the client. def react_component(name, props = {}, options = {}, &block) options = {:tag => options} if options.is_a?(Symbol) prerender_options = options[:prerender] if prerender_options block = Proc.new{ concat React::ServerRendering.render(name, props, prerender_options) } end html_options = options.reverse_merge(:data => {}) html_options[:data].tap do |data| data[:react_class] = name data[:react_props] = (props.is_a?(String) ? props : props.to_json) end html_tag = html_options[:tag] || :div # remove internally used properties so they aren't rendered to DOM html_options.except!(:tag, :prerender) content_tag(html_tag, '', html_options, &block) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
react-rails-1.2.0 | lib/react/rails/view_helper.rb |
react-rails-1.1.0 | lib/react/rails/view_helper.rb |