{"action":"closed","issue":{"url":"https://api.github.com/repos/kbrsh/moon/issues/195","repository_url":"https://api.github.com/repos/kbrsh/moon","labels_url":"https://api.github.com/repos/kbrsh/moon/issues/195/labels{/name}","comments_url":"https://api.github.com/repos/kbrsh/moon/issues/195/comments","events_url":"https://api.github.com/repos/kbrsh/moon/issues/195/events","html_url":"https://github.com/kbrsh/moon/issues/195","id":280383511,"node_id":"MDU6SXNzdWUyODAzODM1MTE=","number":195,"title":"Hoisted VNode Mismatch","user":{"login":"kbrsh","id":15644571,"node_id":"MDQ6VXNlcjE1NjQ0NTcx","avatar_url":"https://avatars3.githubusercontent.com/u/15644571?v=4","gravatar_id":"","url":"https://api.github.com/users/kbrsh","html_url":"https://github.com/kbrsh","followers_url":"https://api.github.com/users/kbrsh/followers","following_url":"https://api.github.com/users/kbrsh/following{/other_user}","gists_url":"https://api.github.com/users/kbrsh/gists{/gist_id}","starred_url":"https://api.github.com/users/kbrsh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbrsh/subscriptions","organizations_url":"https://api.github.com/users/kbrsh/orgs","repos_url":"https://api.github.com/users/kbrsh/repos","events_url":"https://api.github.com/users/kbrsh/events{/privacy}","received_events_url":"https://api.github.com/users/kbrsh/received_events","type":"User","site_admin":false},"labels":[{"id":407930689,"node_id":"MDU6TGFiZWw0MDc5MzA2ODk=","url":"https://api.github.com/repos/kbrsh/moon/labels/bug","name":"bug","color":"ee0701","default":true}],"state":"closed","locked":false,"assignee":{"login":"kbrsh","id":15644571,"node_id":"MDQ6VXNlcjE1NjQ0NTcx","avatar_url":"https://avatars3.githubusercontent.com/u/15644571?v=4","gravatar_id":"","url":"https://api.github.com/users/kbrsh","html_url":"https://github.com/kbrsh","followers_url":"https://api.github.com/users/kbrsh/followers","following_url":"https://api.github.com/users/kbrsh/following{/other_user}","gists_url":"https://api.github.com/users/kbrsh/gists{/gist_id}","starred_url":"https://api.github.com/users/kbrsh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbrsh/subscriptions","organizations_url":"https://api.github.com/users/kbrsh/orgs","repos_url":"https://api.github.com/users/kbrsh/repos","events_url":"https://api.github.com/users/kbrsh/events{/privacy}","received_events_url":"https://api.github.com/users/kbrsh/received_events","type":"User","site_admin":false},"assignees":[{"login":"kbrsh","id":15644571,"node_id":"MDQ6VXNlcjE1NjQ0NTcx","avatar_url":"https://avatars3.githubusercontent.com/u/15644571?v=4","gravatar_id":"","url":"https://api.github.com/users/kbrsh","html_url":"https://github.com/kbrsh","followers_url":"https://api.github.com/users/kbrsh/followers","following_url":"https://api.github.com/users/kbrsh/following{/other_user}","gists_url":"https://api.github.com/users/kbrsh/gists{/gist_id}","starred_url":"https://api.github.com/users/kbrsh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbrsh/subscriptions","organizations_url":"https://api.github.com/users/kbrsh/orgs","repos_url":"https://api.github.com/users/kbrsh/repos","events_url":"https://api.github.com/users/kbrsh/events{/privacy}","received_events_url":"https://api.github.com/users/kbrsh/received_events","type":"User","site_admin":false}],"milestone":null,"comments":1,"created_at":"2017-12-08T06:11:43Z","updated_at":"2018-07-19T01:11:54Z","closed_at":"2018-07-19T01:11:54Z","author_association":"OWNER","body":"In certain cases, the nodes in hoisted vnodes are updated before they are reached, causing the node to be outdated once it is reached.\r\n\r\nI've managed to track down the problem and draft a fix.\r\n\r\n1. When encountering a hoisted vnode being created:\r\n    1. Clone `vnode.data.node`.\r\n    2. Attach event listeners to cloned node.\r\n    3. Use cloned node as created node.\r\n2. When encountering a hoisted new vnode that is not the same as the old vnode:\r\n    1. If not appending, only replace it (no text, component, or child updates). Run `newVNode.data.hoisted = newVNode.data.node`.\r\n3. When encountering a hoisted old vnode that is not the same as the new vnode:\r\n    1. If removing, use `oldVNode.data.hoisted` as `oldVNode.data.node` if available. If not available, use `oldVNode.data.node`.\r\n    2. If it is not removing, only replace it (no text, component, or child updates). Use `oldVNode.data.hoisted` as `oldVNode.data.node` if available. If not available, use `oldVNode.data.node`."}}
{"actor":{"display_login":"kbrsh"}}