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() { applyMobileInterface() {
const isMobile = window.innerWidth <= 768; const isMobile = window.innerWidth <= 768;
if (isMobile !== this.env.isMobile) { if (isMobile !== this.env.isMobile) {
this.env.isMobile = isMobile; this.updateEnv({ isMobile });
this.render();
} }
} }
+3 -31
View File
@@ -1,38 +1,10 @@
import { Component } from "../../../../../src/component"; import { Component, PureComponent } from "../../../../../src/component";
import { Env } from "./env"; import { Env } from "./env";
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Widget classes // Widget classes
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
export class Widget<P, S> extends Component<Env, P, S> { 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 PureWidget<P, S> extends Widget<P, S> { export class PureWidget<P, S> extends PureComponent<Env, 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);
}
}
}
}
+18
View File
@@ -407,3 +407,21 @@ export class Component<
} }
} }
} }
export class PureComponent<E extends Env, P, S> extends Component<E, 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);
}
}
}
}
+9 -2
View File
@@ -1,6 +1,13 @@
import { QWeb } from "./qweb"; import { QWeb } from "./qweb";
import { EventBus } from "./event_bus"; import { EventBus } from "./event_bus";
import { Component } from "./component"; import { Component, PureComponent } from "./component";
import { Store, StoreMixin } from "./store"; import { Store, StoreMixin } from "./store";
export const core = { QWeb, EventBus, Component, Store, StoreMixin }; export const core = {
QWeb,
EventBus,
Component,
PureComponent,
Store,
StoreMixin
};