{"action":"created","comment":{"url":"https://api.github.com/repos/centro/transis/pulls/comments/70974814","id":70974814,"diff_hunk":"@@ -371,8 +382,8 @@ TransisObject.prototype.notify = function(event, ...args) {\n //\n // Returns the receiver.\n TransisObject.prototype.didChange = function(name) {\n-  (this.__changedProps__ = this.__changedProps__ || {})[name] = true;\n-  changedObjects[this.objectId] = this;\n+  changedObjects[this.objectId] = changedObjects[this.objectId] || {object: this, props: {}};","path":"src/object.js","position":114,"original_position":114,"commit_id":"6267b829854660dc93b5361ee442d6e74d05bd2b","original_commit_id":"6267b829854660dc93b5361ee442d6e74d05bd2b","user":{"login":"peterwmwong","id":284734,"avatar_url":"https://avatars.githubusercontent.com/u/284734?v=3","gravatar_id":"","url":"https://api.github.com/users/peterwmwong","html_url":"https://github.com/peterwmwong","followers_url":"https://api.github.com/users/peterwmwong/followers","following_url":"https://api.github.com/users/peterwmwong/following{/other_user}","gists_url":"https://api.github.com/users/peterwmwong/gists{/gist_id}","starred_url":"https://api.github.com/users/peterwmwong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peterwmwong/subscriptions","organizations_url":"https://api.github.com/users/peterwmwong/orgs","repos_url":"https://api.github.com/users/peterwmwong/repos","events_url":"https://api.github.com/users/peterwmwong/events{/privacy}","received_events_url":"https://api.github.com/users/peterwmwong/received_events","type":"User","site_admin":false},"body":"Nit: Maybe consider `registerChange` function as this code is here and in `propagateChanges()`.\r\n\r\n```js\r\n\r\nfunction registerChange(object, prop){\r\n  changedObjects[object.objectId] = changedObjects[object.objectId] || {objec, props: {}};\r\n  changedObjects[object.objectId].props[prop] = true;\r\n}\r\n\r\n```","created_at":"2016-07-15T13:45:13Z","updated_at":"2016-07-15T13:45:13Z","html_url":"https://github.com/centro/transis/pull/35#discussion_r70974814","pull_request_url":"https://api.github.com/repos/centro/transis/pulls/35","_links":{"self":{"href":"https://api.github.com/repos/centro/transis/pulls/comments/70974814"},"html":{"href":"https://github.com/centro/transis/pull/35#discussion_r70974814"},"pull_request":{"href":"https://api.github.com/repos/centro/transis/pulls/35"}}},"pull_request":{"url":"https://api.github.com/repos/centro/transis/pulls/35","id":77467261,"html_url":"https://github.com/centro/transis/pull/35","diff_url":"https://github.com/centro/transis/pull/35.diff","patch_url":"https://github.com/centro/transis/pull/35.patch","issue_url":"https://api.github.com/repos/centro/transis/issues/35","number":35,"state":"open","locked":false,"title":"React mixin performance enhancement","user":{"login":"burrows","id":4668,"avatar_url":"https://avatars.githubusercontent.com/u/4668?v=3","gravatar_id":"","url":"https://api.github.com/users/burrows","html_url":"https://github.com/burrows","followers_url":"https://api.github.com/users/burrows/followers","following_url":"https://api.github.com/users/burrows/following{/other_user}","gists_url":"https://api.github.com/users/burrows/gists{/gist_id}","starred_url":"https://api.github.com/users/burrows/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/burrows/subscriptions","organizations_url":"https://api.github.com/users/burrows/orgs","repos_url":"https://api.github.com/users/burrows/repos","events_url":"https://api.github.com/users/burrows/events{/privacy}","received_events_url":"https://api.github.com/users/burrows/received_events","type":"User","site_admin":false},"body":"This PR updates the React mixins to ensure that `forceUpdate` is only called on a component once per flush cycle. This can lead to significant performance improvements in your React app where you have views that listen for changes to multiple properties that may change at the same time. Special care is also taken to avoid calling `forceUpdate` when a component has already been rendered within the same flush cycle by an ancestor component being updated.\r\n\r\nIn order to make sure that we properly handle property mutations made within an observer callback, the `flush` logic was also updated to only notify observers of property changes that occur prior to the flush starting. Any changes made within observers will be handled in a subsequent flush cycle. This should properly handle the case where the React mixin forces an update on a component, and then some other observer makes a property change that the component depends on. The component won't get re-rendered in that same flush cycle, but a new one will be queued up where that change will then be rendered.","created_at":"2016-07-14T14:38:23Z","updated_at":"2016-07-15T13:45:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e6ef164f18d5074059a42abb92bbd23f25516728","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/centro/transis/pulls/35/commits","review_comments_url":"https://api.github.com/repos/centro/transis/pulls/35/comments","review_comment_url":"https://api.github.com/repos/centro/transis/pulls/comments{/number}","comments_url":"https://api.github.com/repos/centro/transis/issues/35/comments","statuses_url":"https://api.github.com/repos/centro/transis/statuses/6267b829854660dc93b5361ee442d6e74d05bd2b","head":{"label":"centro:react-perf-enhancement","ref":"react-perf-enhancement","sha":"6267b829854660dc93b5361ee442d6e74d05bd2b","user":{"login":"centro","id":13479,"avatar_url":"https://avatars.githubusercontent.com/u/13479?v=3","gravatar_id":"","url":"https://api.github.com/users/centro","html_url":"https://github.com/centro","followers_url":"https://api.github.com/users/centro/followers","following_url":"https://api.github.com/users/centro/following{/other_user}","gists_url":"https://api.github.com/users/centro/gists{/gist_id}","starred_url":"https://api.github.com/users/centro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/centro/subscriptions","organizations_url":"https://api.github.com/users/centro/orgs","repos_url":"https://api.github.com/users/centro/repos","events_url":"https://api.github.com/users/centro/events{/privacy}","received_events_url":"https://api.github.com/users/centro/received_events","type":"Organization","site_admin":false},"repo":{"id":29742529,"name":"transis","full_name":"centro/transis","owner":{"login":"centro","id":13479,"avatar_url":"https://avatars.githubusercontent.com/u/13479?v=3","gravatar_id":"","url":"https://api.github.com/users/centro","html_url":"https://github.com/centro","followers_url":"https://api.github.com/users/centro/followers","following_url":"https://api.github.com/users/centro/following{/other_user}","gists_url":"https://api.github.com/users/centro/gists{/gist_id}","starred_url":"https://api.github.com/users/centro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/centro/subscriptions","organizations_url":"https://api.github.com/users/centro/orgs","repos_url":"https://api.github.com/users/centro/repos","events_url":"https://api.github.com/users/centro/events{/privacy}","received_events_url":"https://api.github.com/users/centro/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/centro/transis","description":"A data modeling library useful for creating rich client-side experiences.","fork":false,"url":"https://api.github.com/repos/centro/transis","forks_url":"https://api.github.com/repos/centro/transis/forks","keys_url":"https://api.github.com/repos/centro/transis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/centro/transis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/centro/transis/teams","hooks_url":"https://api.github.com/repos/centro/transis/hooks","issue_events_url":"https://api.github.com/repos/centro/transis/issues/events{/number}","events_url":"https://api.github.com/repos/centro/transis/events","assignees_url":"https://api.github.com/repos/centro/transis/assignees{/user}","branches_url":"https://api.github.com/repos/centro/transis/branches{/branch}","tags_url":"https://api.github.com/repos/centro/transis/tags","blobs_url":"https://api.github.com/repos/centro/transis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/centro/transis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/centro/transis/git/refs{/sha}","trees_url":"https://api.github.com/repos/centro/transis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/centro/transis/statuses/{sha}","languages_url":"https://api.github.com/repos/centro/transis/languages","stargazers_url":"https://api.github.com/repos/centro/transis/stargazers","contributors_url":"https://api.github.com/repos/centro/transis/contributors","subscribers_url":"https://api.github.com/repos/centro/transis/subscribers","subscription_url":"https://api.github.com/repos/centro/transis/subscription","commits_url":"https://api.github.com/repos/centro/transis/commits{/sha}","git_commits_url":"https://api.github.com/repos/centro/transis/git/commits{/sha}","comments_url":"https://api.github.com/repos/centro/transis/comments{/number}","issue_comment_url":"https://api.github.com/repos/centro/transis/issues/comments{/number}","contents_url":"https://api.github.com/repos/centro/transis/contents/{+path}","compare_url":"https://api.github.com/repos/centro/transis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/centro/transis/merges","archive_url":"https://api.github.com/repos/centro/transis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/centro/transis/downloads","issues_url":"https://api.github.com/repos/centro/transis/issues{/number}","pulls_url":"https://api.github.com/repos/centro/transis/pulls{/number}","milestones_url":"https://api.github.com/repos/centro/transis/milestones{/number}","notifications_url":"https://api.github.com/repos/centro/transis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/centro/transis/labels{/name}","releases_url":"https://api.github.com/repos/centro/transis/releases{/id}","deployments_url":"https://api.github.com/repos/centro/transis/deployments","created_at":"2015-01-23T16:54:23Z","updated_at":"2016-06-04T21:55:15Z","pushed_at":"2016-07-14T14:38:23Z","git_url":"git://github.com/centro/transis.git","ssh_url":"git@github.com:centro/transis.git","clone_url":"https://github.com/centro/transis.git","svn_url":"https://github.com/centro/transis","homepage":"","size":1106,"stargazers_count":20,"watchers_count":20,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":3,"forks":3,"open_issues":3,"watchers":20,"default_branch":"master"}},"base":{"label":"centro:master","ref":"master","sha":"89fb5fd0a36fa9af7e31b6d369dd778c3c1fb03c","user":{"login":"centro","id":13479,"avatar_url":"https://avatars.githubusercontent.com/u/13479?v=3","gravatar_id":"","url":"https://api.github.com/users/centro","html_url":"https://github.com/centro","followers_url":"https://api.github.com/users/centro/followers","following_url":"https://api.github.com/users/centro/following{/other_user}","gists_url":"https://api.github.com/users/centro/gists{/gist_id}","starred_url":"https://api.github.com/users/centro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/centro/subscriptions","organizations_url":"https://api.github.com/users/centro/orgs","repos_url":"https://api.github.com/users/centro/repos","events_url":"https://api.github.com/users/centro/events{/privacy}","received_events_url":"https://api.github.com/users/centro/received_events","type":"Organization","site_admin":false},"repo":{"id":29742529,"name":"transis","full_name":"centro/transis","owner":{"login":"centro","id":13479,"avatar_url":"https://avatars.githubusercontent.com/u/13479?v=3","gravatar_id":"","url":"https://api.github.com/users/centro","html_url":"https://github.com/centro","followers_url":"https://api.github.com/users/centro/followers","following_url":"https://api.github.com/users/centro/following{/other_user}","gists_url":"https://api.github.com/users/centro/gists{/gist_id}","starred_url":"https://api.github.com/users/centro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/centro/subscriptions","organizations_url":"https://api.github.com/users/centro/orgs","repos_url":"https://api.github.com/users/centro/repos","events_url":"https://api.github.com/users/centro/events{/privacy}","received_events_url":"https://api.github.com/users/centro/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/centro/transis","description":"A data modeling library useful for creating rich client-side experiences.","fork":false,"url":"https://api.github.com/repos/centro/transis","forks_url":"https://api.github.com/repos/centro/transis/forks","keys_url":"https://api.github.com/repos/centro/transis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/centro/transis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/centro/transis/teams","hooks_url":"https://api.github.com/repos/centro/transis/hooks","issue_events_url":"https://api.github.com/repos/centro/transis/issues/events{/number}","events_url":"https://api.github.com/repos/centro/transis/events","assignees_url":"https://api.github.com/repos/centro/transis/assignees{/user}","branches_url":"https://api.github.com/repos/centro/transis/branches{/branch}","tags_url":"https://api.github.com/repos/centro/transis/tags","blobs_url":"https://api.github.com/repos/centro/transis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/centro/transis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/centro/transis/git/refs{/sha}","trees_url":"https://api.github.com/repos/centro/transis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/centro/transis/statuses/{sha}","languages_url":"https://api.github.com/repos/centro/transis/languages","stargazers_url":"https://api.github.com/repos/centro/transis/stargazers","contributors_url":"https://api.github.com/repos/centro/transis/contributors","subscribers_url":"https://api.github.com/repos/centro/transis/subscribers","subscription_url":"https://api.github.com/repos/centro/transis/subscription","commits_url":"https://api.github.com/repos/centro/transis/commits{/sha}","git_commits_url":"https://api.github.com/repos/centro/transis/git/commits{/sha}","comments_url":"https://api.github.com/repos/centro/transis/comments{/number}","issue_comment_url":"https://api.github.com/repos/centro/transis/issues/comments{/number}","contents_url":"https://api.github.com/repos/centro/transis/contents/{+path}","compare_url":"https://api.github.com/repos/centro/transis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/centro/transis/merges","archive_url":"https://api.github.com/repos/centro/transis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/centro/transis/downloads","issues_url":"https://api.github.com/repos/centro/transis/issues{/number}","pulls_url":"https://api.github.com/repos/centro/transis/pulls{/number}","milestones_url":"https://api.github.com/repos/centro/transis/milestones{/number}","notifications_url":"https://api.github.com/repos/centro/transis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/centro/transis/labels{/name}","releases_url":"https://api.github.com/repos/centro/transis/releases{/id}","deployments_url":"https://api.github.com/repos/centro/transis/deployments","created_at":"2015-01-23T16:54:23Z","updated_at":"2016-06-04T21:55:15Z","pushed_at":"2016-07-14T14:38:23Z","git_url":"git://github.com/centro/transis.git","ssh_url":"git@github.com:centro/transis.git","clone_url":"https://github.com/centro/transis.git","svn_url":"https://github.com/centro/transis","homepage":"","size":1106,"stargazers_count":20,"watchers_count":20,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":3,"forks":3,"open_issues":3,"watchers":20,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/centro/transis/pulls/35"},"html":{"href":"https://github.com/centro/transis/pull/35"},"issue":{"href":"https://api.github.com/repos/centro/transis/issues/35"},"comments":{"href":"https://api.github.com/repos/centro/transis/issues/35/comments"},"review_comments":{"href":"https://api.github.com/repos/centro/transis/pulls/35/comments"},"review_comment":{"href":"https://api.github.com/repos/centro/transis/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/centro/transis/pulls/35/commits"},"statuses":{"href":"https://api.github.com/repos/centro/transis/statuses/6267b829854660dc93b5361ee442d6e74d05bd2b"}}}}
{"actor":{"display_login":"peterwmwong"}}