Refactor start/endComputation into lazyRedraw method

This commit is contained in:
Toby Zerner
2015-08-31 12:04:51 +09:30
parent 9f28b4e8dc
commit 0474f410a4
5 changed files with 14 additions and 16 deletions

View File

@ -179,12 +179,7 @@ export default class DiscussionList extends Component {
this.loading = false; this.loading = false;
this.moreResults = !!results.payload.links.next; this.moreResults = !!results.payload.links.next;
// Since this may be called during the component's constructor, i.e. in the m.lazyRedraw();
// middle of a redraw, forcing another redraw would not bode well. Instead
// we start/end a computation so Mithril will only redraw if it isn't
// already doing so.
m.startComputation();
m.endComputation();
return results; return results;
} }

View File

@ -149,12 +149,7 @@ export default class DiscussionPage extends mixin(Component, evented) {
.then(this.init.bind(this)); .then(this.init.bind(this));
} }
// Since this may be called during the component's constructor, i.e. in the m.lazyRedraw();
// middle of a redraw, forcing another redraw would not bode well. Instead
// we start/end a computation so Mithril will only redraw if it isn't
// already doing so.
m.startComputation();
m.endComputation();
} }
/** /**

View File

@ -95,9 +95,7 @@ export default class PostsUserPage extends UserPage {
this.loading = true; this.loading = true;
this.posts = []; this.posts = [];
// Redraw, but only if we're not in the middle of a route change. m.lazyRedraw();
m.startComputation();
m.endComputation();
this.loadResults().then(this.parseResults.bind(this)); this.loadResults().then(this.parseResults.bind(this));
} }

View File

@ -81,7 +81,7 @@ export default class ModalManager extends Component {
clear() { clear() {
this.component = null; this.component = null;
m.redraw(); m.lazyRedraw();
} }
/** /**

View File

@ -13,5 +13,15 @@ export default function patchMithril(global) {
Object.keys(mo).forEach(key => m[key] = mo[key]); Object.keys(mo).forEach(key => m[key] = mo[key]);
/**
* Redraw only if not in the middle of a computation (e.g. a route change).
*
* @return {void}
*/
m.lazyRedraw = function() {
m.startComputation();
m.endComputation();
};
global.m = m; global.m = m;
} }