feat:Add InconsistProperty decorator because sometimes the property in js side cannot be consist with natiive side

This commit is contained in:
pengfei.zhou
2021-03-03 10:08:48 +08:00
committed by osborn
parent d13948223e
commit 28519d20c7
11 changed files with 80 additions and 13 deletions

View File

@@ -185,6 +185,18 @@ function Property(target, propKey) {
},
});
}
function InconsistProperty(target, propKey) {
Object.defineProperty(target, propKey, {
get: function () {
return Reflect.get(this, "__prop__" + propKey, this);
},
set: function (v) {
var oldV = Reflect.get(this, "__prop__" + propKey, this);
Reflect.set(this, "__prop__" + propKey, v, this);
Reflect.apply(this.onPropertyChanged, this, [propKey, oldV, v]);
},
});
}
var View = /** @class */ (function () {
function View() {
this.width = 0;
@@ -3546,6 +3558,7 @@ exports.Gravity = Gravity;
exports.Group = Group;
exports.HLayout = HLayout;
exports.Image = Image;
exports.InconsistProperty = InconsistProperty;
exports.Input = Input;
exports.LEFT = LEFT;
exports.LayoutConfigImpl = LayoutConfigImpl;

View File

@@ -125,8 +125,13 @@ var __decorate$d = (undefined && undefined.__decorate) || function (decorators,
var __metadata$d = (undefined && undefined.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
const PROP_CONSIST = 1;
const PROP_INCONSIST = 2;
function Property(target, propKey) {
Reflect.defineMetadata(propKey, true, target);
Reflect.defineMetadata(propKey, PROP_CONSIST, target);
}
function InconsistProperty(target, propKey) {
Reflect.defineMetadata(propKey, PROP_INCONSIST, target);
}
class View {
constructor() {
@@ -150,7 +155,10 @@ class View {
set: (target, p, v, receiver) => {
const oldV = Reflect.get(target, p, receiver);
const ret = Reflect.set(target, p, v, receiver);
if (Reflect.getMetadata(p, target) && oldV !== v) {
if (Reflect.getMetadata(p, target) === PROP_CONSIST && oldV !== v) {
receiver.onPropertyChanged(p.toString(), oldV, v);
}
else if (Reflect.getMetadata(p, target) === PROP_INCONSIST) {
receiver.onPropertyChanged(p.toString(), oldV, v);
}
return ret;
@@ -2736,6 +2744,7 @@ exports.Gravity = Gravity;
exports.Group = Group;
exports.HLayout = HLayout;
exports.Image = Image;
exports.InconsistProperty = InconsistProperty;
exports.Input = Input;
exports.LEFT = LEFT;
exports.LayoutConfigImpl = LayoutConfigImpl;

View File

@@ -1620,8 +1620,13 @@ var __decorate$d = (undefined && undefined.__decorate) || function (decorators,
var __metadata$d = (undefined && undefined.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
const PROP_CONSIST = 1;
const PROP_INCONSIST = 2;
function Property(target, propKey) {
Reflect.defineMetadata(propKey, true, target);
Reflect.defineMetadata(propKey, PROP_CONSIST, target);
}
function InconsistProperty(target, propKey) {
Reflect.defineMetadata(propKey, PROP_INCONSIST, target);
}
class View {
constructor() {
@@ -1645,7 +1650,10 @@ class View {
set: (target, p, v, receiver) => {
const oldV = Reflect.get(target, p, receiver);
const ret = Reflect.set(target, p, v, receiver);
if (Reflect.getMetadata(p, target) && oldV !== v) {
if (Reflect.getMetadata(p, target) === PROP_CONSIST && oldV !== v) {
receiver.onPropertyChanged(p.toString(), oldV, v);
}
else if (Reflect.getMetadata(p, target) === PROP_INCONSIST) {
receiver.onPropertyChanged(p.toString(), oldV, v);
}
return ret;
@@ -4403,9 +4411,11 @@ global$1.nativeLog = (type, msg) => {
};
global$1.nativeRequire = () => {
console.error("Do not call nativeRequire here");
return false;
};
global$1.nativeBridge = () => {
console.error("Do not call nativeBridge here");
return false;
};
exports.AnimationSet = AnimationSet;
@@ -4423,6 +4433,7 @@ exports.Gravity = Gravity;
exports.Group = Group;
exports.HLayout = HLayout;
exports.Image = Image;
exports.InconsistProperty = InconsistProperty;
exports.Input = Input;
exports.LEFT = LEFT;
exports.LayoutConfigImpl = LayoutConfigImpl;