{"action":"created","issue":{"url":"https://api.github.com/repos/vuejs/vue/issues/5155","repository_url":"https://api.github.com/repos/vuejs/vue","labels_url":"https://api.github.com/repos/vuejs/vue/issues/5155/labels{/name}","comments_url":"https://api.github.com/repos/vuejs/vue/issues/5155/comments","events_url":"https://api.github.com/repos/vuejs/vue/issues/5155/events","html_url":"https://github.com/vuejs/vue/issues/5155","id":213170575,"number":5155,"title":"Reactivity with render function components triggers entire re-render of tree","user":{"login":"johnleider","id":9064066,"avatar_url":"https://avatars0.githubusercontent.com/u/9064066?v=3","gravatar_id":"","url":"https://api.github.com/users/johnleider","html_url":"https://github.com/johnleider","followers_url":"https://api.github.com/users/johnleider/followers","following_url":"https://api.github.com/users/johnleider/following{/other_user}","gists_url":"https://api.github.com/users/johnleider/gists{/gist_id}","starred_url":"https://api.github.com/users/johnleider/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnleider/subscriptions","organizations_url":"https://api.github.com/users/johnleider/orgs","repos_url":"https://api.github.com/users/johnleider/repos","events_url":"https://api.github.com/users/johnleider/events{/privacy}","received_events_url":"https://api.github.com/users/johnleider/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-03-09T21:27:39Z","updated_at":"2017-03-09T21:44:16Z","closed_at":null,"body":"### Vue.js version\r\n2.2.1\r\n\r\n### Reproduction Link\r\nhttp://codepen.io/johnjleider/pen/GWWpPK?editors=1111\r\n\r\n### Steps to reproduce\r\nCreate a chain of render components and update one with a bound style value.\r\n\r\n### What is Expected?\r\nRe-render of component\r\n\r\n### What is actually happening?\r\nRe-rendering of entire component chain.\r\n\r\nI ran into this while testing resizing a div by mouse move. I replaced the style object with explicitly assigning the values through $refs, and the performance change was quite substantial.\r\n![selection_070](https://cloud.githubusercontent.com/assets/9064066/23771500/2ae92670-04e5-11e7-8e60-e68ddc147391.png)\r\n![selection_069](https://cloud.githubusercontent.com/assets/9064066/23771504/2ed105be-04e5-11e7-9265-d6b05cd182d8.png)\r\n\r\nThis obviously has to do with reactivity, but I wasn't sure if this is intentional.\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/vuejs/vue/issues/comments/285493114","html_url":"https://github.com/vuejs/vue/issues/5155#issuecomment-285493114","issue_url":"https://api.github.com/repos/vuejs/vue/issues/5155","id":285493114,"user":{"login":"LinusBorg","id":1444526,"avatar_url":"https://avatars0.githubusercontent.com/u/1444526?v=3","gravatar_id":"","url":"https://api.github.com/users/LinusBorg","html_url":"https://github.com/LinusBorg","followers_url":"https://api.github.com/users/LinusBorg/followers","following_url":"https://api.github.com/users/LinusBorg/following{/other_user}","gists_url":"https://api.github.com/users/LinusBorg/gists{/gist_id}","starred_url":"https://api.github.com/users/LinusBorg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LinusBorg/subscriptions","organizations_url":"https://api.github.com/users/LinusBorg/orgs","repos_url":"https://api.github.com/users/LinusBorg/repos","events_url":"https://api.github.com/users/LinusBorg/events{/privacy}","received_events_url":"https://api.github.com/users/LinusBorg/received_events","type":"User","site_admin":false},"created_at":"2017-03-09T21:44:16Z","updated_at":"2017-03-09T21:44:16Z","body":"That's not a bug, it's expected behaviour because of the slots that you use.\r\n\r\nWhen the root component re-renders, it passes the slot nodes again to the child component, and now that component has to re-render too, because Vue can't be sure that you haven't decided to implement some logic that reacts to these new vnodes it received in `this.$slots`"}}
{"actor":{"display_login":"LinusBorg"}}