module ReactWebpackRails::ViewHelpers

Public Instance Methods

react_component(name, raw_props = {}, options = {}) click to toggle source
# File lib/react_webpack_rails/view_helpers.rb, line 23
def react_component(name, raw_props = {}, options = {})
  props = raw_props.as_json
  props = Services::CamelizeKeys.call(props) if Rails.application.config.react.camelize_props
  if server_side(options.delete(:server_side))
    result = NodeIntegrationRunner.new('react-component', props: props, name: name).run
    rwr_element('react-component', { props: props, name: name }, options) do
      result.html_safe
    end
  else
    rwr_element('react-component', { props: props, name: name }, options)
  end
end
react_element(integration_name, payload = {}, html_options = {}, &block) click to toggle source
# File lib/react_webpack_rails/view_helpers.rb, line 16
def react_element(integration_name, payload = {}, html_options = {}, &block)
  message = 'since v0.5.0: react_element is deprecated. Use rwr_element instead'
  ActiveSupport::Deprecation.warn message

  rwr_element(integration_name, payload, html_options, &block)
end
react_router(name) click to toggle source
# File lib/react_webpack_rails/view_helpers.rb, line 36
def react_router(name)
  deprecation_warning
  rwr_element('react-router', name: name)
end
rwr_element(integration_name, payload = {}, html_options = {}, &block) click to toggle source
# File lib/react_webpack_rails/view_helpers.rb, line 5
def rwr_element(integration_name, payload = {}, html_options = {}, &block)
  data = {
    integration_name: integration_name,
    payload: payload,
    rwr_element: true
  }
  html_options = html_options.merge(data: data)
  html_tag = html_options.delete(:tag) || :div
  content_tag(html_tag, '', html_options, &block)
end

Private Instance Methods

deprecation_warning() click to toggle source
# File lib/react_webpack_rails/view_helpers.rb, line 47
def deprecation_warning
  message = [
    "\nDEPRECATION WARNING - since v0.3.0:",
    "current integration with react-router was extracted and moved to external plugin.",
    "Use https://github.com/netguru/rwr-react_router instead.\n\n",
  ]

  warn message.join("\n")
end
server_side(server_side) click to toggle source
# File lib/react_webpack_rails/view_helpers.rb, line 43
def server_side(server_side)
  server_side.nil? ? Rails.application.config.react.server_side : server_side
end