class ReactComponent

Public Class Methods

new(tag, params, tokens) click to toggle source
Calls superclass method
# File lib/jekyll-react-component/react_component.rb, line 10
def initialize(tag, params, tokens)
  parse_params(params)
  super
end

Public Instance Methods

render(context) click to toggle source
Calls superclass method
# File lib/jekyll-react-component/react_component.rb, line 15
  def render(context)
    @code = super

    <<~CODE
      <div id="#{@id}"></div>
      <script type="module">
        import React from 'react';
        import ReactDOM from 'react-dom';
        import htm from 'htm';
        const html = htm.bind(React.createElement);
        #{@code}

        ReactDOM.render(html`<${#{@name}} #{pass_props} />`, document.getElementById('#{@id}'));
      </script>
    CODE
  end

Private Instance Methods

parse_params(params) click to toggle source
# File lib/jekyll-react-component/react_component.rb, line 34
def parse_params(params)
  params = Params.new(params)
  @name = params[:name]
  @id = params.fetch(:id, @name.underscore.dasherize)
  @props = params.fetch(:props, nil)
end
pass_props() click to toggle source
# File lib/jekyll-react-component/react_component.rb, line 41
def pass_props
  if @props.nil?
    ''
  else
    "...${#{@props.to_json}}"
  end
end