{"action":"opened","issue":{"url":"https://api.github.com/repos/ruby-hyperloop/hyper-react/issues/270","repository_url":"https://api.github.com/repos/ruby-hyperloop/hyper-react","labels_url":"https://api.github.com/repos/ruby-hyperloop/hyper-react/issues/270/labels{/name}","comments_url":"https://api.github.com/repos/ruby-hyperloop/hyper-react/issues/270/comments","events_url":"https://api.github.com/repos/ruby-hyperloop/hyper-react/issues/270/events","html_url":"https://github.com/ruby-hyperloop/hyper-react/issues/270","id":342906531,"node_id":"MDU6SXNzdWUzNDI5MDY1MzE=","number":270,"title":"clean up how ruby component classes are translated to react component classes","user":{"login":"catmando","id":63146,"node_id":"MDQ6VXNlcjYzMTQ2","avatar_url":"https://avatars1.githubusercontent.com/u/63146?v=4","gravatar_id":"","url":"https://api.github.com/users/catmando","html_url":"https://github.com/catmando","followers_url":"https://api.github.com/users/catmando/followers","following_url":"https://api.github.com/users/catmando/following{/other_user}","gists_url":"https://api.github.com/users/catmando/gists{/gist_id}","starred_url":"https://api.github.com/users/catmando/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/catmando/subscriptions","organizations_url":"https://api.github.com/users/catmando/orgs","repos_url":"https://api.github.com/users/catmando/repos","events_url":"https://api.github.com/users/catmando/events{/privacy}","received_events_url":"https://api.github.com/users/catmando/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-07-19T22:09:05Z","updated_at":"2018-07-19T22:09:05Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"Currently, the first time a ruby component class is passed to createElement, a wrapper react.js component class is created (see react/api.rb)\r\n\r\nThe lifecycle methods in the wrapper class then call back into the ruby class.\r\n\r\nThis is not only inefficient but in the case of componentDidCatch it doesn't work, since this means every component class is defined with a componentDidCatch method, where as react assumes only components that will handle an error boundry will have a componentDidCatch method.  \r\n\r\nSo what should happen is that as soon as a the hyperloop component mixin is included in a class, this immediately creates a new react prototype class.  Then as each life cycle method is called for the first time, the appropriate hook is added to the prototype class."}}
{"actor":{"display_login":"catmando"}}