{"action":"created","issue":{"url":"https://api.github.com/repos/callemall/material-ui/issues/2573","repository_url":"https://api.github.com/repos/callemall/material-ui","labels_url":"https://api.github.com/repos/callemall/material-ui/issues/2573/labels{/name}","comments_url":"https://api.github.com/repos/callemall/material-ui/issues/2573/comments","events_url":"https://api.github.com/repos/callemall/material-ui/issues/2573/events","html_url":"https://github.com/callemall/material-ui/issues/2573","id":122783094,"number":2573,"title":"Remove the usage of isMounted()","user":{"login":"oliviertassinari","id":3165635,"avatar_url":"https://avatars.githubusercontent.com/u/3165635?v=3","gravatar_id":"","url":"https://api.github.com/users/oliviertassinari","html_url":"https://github.com/oliviertassinari","followers_url":"https://api.github.com/users/oliviertassinari/followers","following_url":"https://api.github.com/users/oliviertassinari/following{/other_user}","gists_url":"https://api.github.com/users/oliviertassinari/gists{/gist_id}","starred_url":"https://api.github.com/users/oliviertassinari/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oliviertassinari/subscriptions","organizations_url":"https://api.github.com/users/oliviertassinari/orgs","repos_url":"https://api.github.com/users/oliviertassinari/repos","events_url":"https://api.github.com/users/oliviertassinari/events{/privacy}","received_events_url":"https://api.github.com/users/oliviertassinari/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/callemall/material-ui/labels/Core","name":"Core","color":"006b75"},{"url":"https://api.github.com/repos/callemall/material-ui/labels/Umbrella","name":"Umbrella","color":"1a1a1a"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/callemall/material-ui/milestones/10","html_url":"https://github.com/callemall/material-ui/milestones/0.15.0%20Release","labels_url":"https://api.github.com/repos/callemall/material-ui/milestones/10/labels","id":1472363,"number":10,"title":"0.15.0 Release","description":"","creator":{"login":"alitaheri","id":8528759,"avatar_url":"https://avatars.githubusercontent.com/u/8528759?v=3","gravatar_id":"","url":"https://api.github.com/users/alitaheri","html_url":"https://github.com/alitaheri","followers_url":"https://api.github.com/users/alitaheri/followers","following_url":"https://api.github.com/users/alitaheri/following{/other_user}","gists_url":"https://api.github.com/users/alitaheri/gists{/gist_id}","starred_url":"https://api.github.com/users/alitaheri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alitaheri/subscriptions","organizations_url":"https://api.github.com/users/alitaheri/orgs","repos_url":"https://api.github.com/users/alitaheri/repos","events_url":"https://api.github.com/users/alitaheri/events{/privacy}","received_events_url":"https://api.github.com/users/alitaheri/received_events","type":"User","site_admin":false},"open_issues":27,"closed_issues":9,"state":"open","created_at":"2015-12-23T09:11:44Z","updated_at":"2016-02-16T19:27:18Z","due_on":null,"closed_at":null},"comments":6,"created_at":"2015-12-17T17:28:08Z","updated_at":"2016-02-17T06:11:11Z","closed_at":null,"body":"Following https://facebook.github.io/react/blog/2015/12/16/ismounted-antipattern.html.\r\nWe need to fix those component\r\n- [x] Snackbar https://github.com/callemall/material-ui/pull/2562\r\n- [ ] CircleRipple\r\n- [ ] click-awayable.js\r\n- [x] RefreshIndicator #2739\r\n- [ ] TextField\r\n- [ ] FocusRipple\r\n- [x] CircularProgress #2739\r\n- [x] LinearProgress #2739\r\n- [ ] Menu\r\n- [ ] IconMenu\r\n- [ ] Popover\r\n- [ ] Dialog\r\n"},"comment":{"url":"https://api.github.com/repos/callemall/material-ui/issues/comments/185043551","html_url":"https://github.com/callemall/material-ui/issues/2573#issuecomment-185043551","issue_url":"https://api.github.com/repos/callemall/material-ui/issues/2573","id":185043551,"user":{"login":"alitaheri","id":8528759,"avatar_url":"https://avatars.githubusercontent.com/u/8528759?v=3","gravatar_id":"","url":"https://api.github.com/users/alitaheri","html_url":"https://github.com/alitaheri","followers_url":"https://api.github.com/users/alitaheri/followers","following_url":"https://api.github.com/users/alitaheri/following{/other_user}","gists_url":"https://api.github.com/users/alitaheri/gists{/gist_id}","starred_url":"https://api.github.com/users/alitaheri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alitaheri/subscriptions","organizations_url":"https://api.github.com/users/alitaheri/orgs","repos_url":"https://api.github.com/users/alitaheri/repos","events_url":"https://api.github.com/users/alitaheri/events{/privacy}","received_events_url":"https://api.github.com/users/alitaheri/received_events","type":"User","site_admin":false},"created_at":"2016-02-17T06:11:11Z","updated_at":"2016-02-17T06:11:11Z","body":"@newoga there is. It's `cancellation` take a look at [linear-progress](https://github.com/callemall/material-ui/blob/master/src/linear-progress.jsx#L159). The better pattern is instance fields to hold the handler. In other words the lifecycle is like the following:\r\n\r\n1. assign the value returned by setTimeout to the instance field ( anywhere in the code that it's used)\r\n1. for each unique timer concurrently executable timer there should be one field (linear-progress needs 2)\r\n1. with each call to componentWillUnmount clear every timeout.\r\n\r\nSimple, efficient and pattern friendly :+1: "}}