Sha256: e0dd70e1bb0152194bf9f986c693ee745087bde430a3e67449608571ec1c67d4
Contents?: true
Size: 1.36 KB
Versions: 19
Compression:
Stored size: 1.36 KB
Contents
module ReactiveRuby module Rails class ComponentMount < React::Rails::ComponentMount attr_accessor :controller def setup(controller) self.controller = controller end def react_component(name, props = {}, options = {}, &block) options = context_initializer_options(options, name) if options[:prerender] props = serialized_props(props, name, controller) super(top_level_name, props, options, &block) + footers end private def context_initializer_options(options, name) options[:prerender] = {options[:prerender] => true} unless options[:prerender].is_a? Hash existing_context_initializer = options[:prerender][:context_initializer] options[:prerender][:context_initializer] = lambda do |ctx| React::IsomorphicHelpers.load_context(ctx, controller, name) existing_context_initializer.call ctx if existing_context_initializer end options end def serialized_props(props, name, controller) { render_params: props, component_name: name, controller: controller.class.name.gsub(/Controller$/,"") }.react_serializer end def top_level_name 'React.TopLevelRailsComponent' end def footers React::IsomorphicHelpers.prerender_footers #if options[:prerender] end end end end
Version data entries
19 entries across 19 versions & 2 rubygems