ref: move PureWidget back to core, use updateEnv

This commit is contained in:
Géry Debongnie
2019-03-21 16:33:08 +01:00
parent ad9fb77458
commit add380f59b
4 changed files with 31 additions and 35 deletions
+1 -2
View File
@@ -40,8 +40,7 @@ export class Root extends Widget<Store, State> {
applyMobileInterface() {
const isMobile = window.innerWidth <= 768;
if (isMobile !== this.env.isMobile) {
this.env.isMobile = isMobile;
this.render();
this.updateEnv({ isMobile });
}
}
+3 -31
View File
@@ -1,38 +1,10 @@
import { Component } from "../../../../../src/component";
import { Component, PureComponent } from "../../../../../src/component";
import { Env } from "./env";
//------------------------------------------------------------------------------
// Widget classes
//------------------------------------------------------------------------------
export class Widget<P, S> extends Component<Env, P, S> {
constructor(parent, props) {
super(parent, props);
(<any>this.__widget__).isMobile = this.env.isMobile;
}
async updateProps(nextProps: P): Promise<void> {
if ((<any>this.__widget__).isMobile !== this.env.isMobile) {
(<any>this.__widget__).isMobile = this.env.isMobile;
return this._updateProps(nextProps);
}
return super.updateProps(nextProps);
}
}
export class Widget<P, S> extends Component<Env, P, S> {}
export class PureWidget<P, S> extends Widget<P, S> {
shouldUpdate(nextProps: P): boolean {
for (let k in nextProps) {
if (nextProps[k] !== this.props[k]) {
return true;
}
}
return false;
}
async updateState(nextState: Partial<S>) {
for (let k in nextState) {
if (nextState[k] !== this.state[k]) {
return super.updateState(nextState);
}
}
}
}
export class PureWidget<P, S> extends PureComponent<Env, P, S> {}