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

@@ -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;