module React::Component::ClassMethods

Public Instance Methods

default_props() click to toggle source
# File lib/react/component.rb, line 130
def default_props
  self.validator ? self.validator.default_props : {}
end
define_state(*states) { || ... } click to toggle source
# File lib/react/component.rb, line 138
def define_state(*states)
  raise "Block could be only given when define exactly one state" if block_given? && states.count > 1

  self.init_state = {} unless self.init_state

  if block_given?
    self.init_state[states[0]] = yield
  end
  states.each do |name|
    # getter
    define_method("#{name}") do
      return unless @native
      self.state[name]
    end
    # setter
    define_method("#{name}=") do |new_state|
      return unless @native
      hash = {}
      hash[name] = new_state
      self.set_state(hash)

      new_state
    end
  end
end
initial_state() click to toggle source
# File lib/react/component.rb, line 126
def initial_state
  self.init_state || {}
end
params(&block) click to toggle source
# File lib/react/component.rb, line 134
def params(&block)
  self.validator = React::Validator.build(&block)
end
prop_types() click to toggle source
# File lib/react/component.rb, line 110
def prop_types
  if self.validator
    {
      _componentValidator: %x{
        function(props, propName, componentName) {
          var errors = #{validator.validate(Hash.new(`props`))};
          var error = new Error(#{"In component `" + self.name + "`\n" + `errors`.join("\n")});
          return #{`errors`.count > 0 ? `error` : `undefined`};
        }
      }
    }
  else
    {}
  end
end