1
0
mirror of https://github.com/flarum/core.git synced 2025-07-26 11:10:41 +02:00

Fix lifecyle method workarounds (#2378)

Essentially, whenever a route is loaded, we add a key to that component. If the key changes, the page completely rerenders. Switching between different routes handled by the same key triggers those rerenders.
This commit is contained in:
Wadim Kalmykov
2020-10-16 04:40:25 +07:00
committed by GitHub
parent eb498a0a9f
commit 78be6e2194
5 changed files with 9 additions and 84 deletions

View File

@@ -10,7 +10,11 @@ export default class Page extends Component {
oninit(vnode) {
super.oninit(vnode);
this.onNewRoute();
app.previous = app.current;
app.current = new PageState(this.constructor, { routeName: this.attrs.routeName });
app.drawer.hide();
app.modal.close();
/**
* A class name to apply to the body while the route is active.
@@ -20,20 +24,6 @@ export default class Page extends Component {
this.bodyClass = '';
}
/**
* A collections of actions to run when the route changes.
* This is extracted here, and not hardcoded in oninit, as oninit is not called
* when a different route is handled by the same component, but we still need to
* adjust the current route name.
*/
onNewRoute() {
app.previous = app.current;
app.current = new PageState(this.constructor, { routeName: this.attrs.routeName });
app.drawer.hide();
app.modal.close();
}
oncreate(vnode) {
super.oncreate(vnode);