Skip to content

add support for importing new react memo component type #305

Open
@catmando

Description

@catmando

react now has a component type called memo.

Need to detect when importing. For example the Material UI Icon Library is all built using memo type components.

Here is the patch:

module Hyperstack
  module Internal
    module Component
      class ReactWrapper
        def self.eval_native_react_component(name)
          component = `eval(name)`
          raise "#{name} is not defined" if `#{component} === undefined`
          component = `component.default` if `component.__esModule && component.default`
          is_component_class = `#{component}.prototype !== undefined` &&
                                (`!!#{component}.prototype.isReactComponent` ||
                                 `!!#{component}.prototype.render`)
          is_memo = `#{component}.type != undefined` && `typeof #{component}.type.render === "function"`
          has_render_method = `typeof #{component}.render === "function"`
          unless is_component_class || stateless?(component) || has_render_method || is_memo
            raise 'does not appear to be a native react component'
          end
          component
        end
      end
    end
  end
end

For now there is no work around, you have to apply the patch.

(Note this patch also incorporates the patch for #231)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcompatibilitycompatibility with dependencies such as Rails, Opal, React, etc. NOT FUNCTIONAL COMPATIBILITYgood first issueGood for newcomers

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions