Browse Source

Pull request #269825: KERNEL-17875 fix: fineui Dep不能回收问题

Merge in DEC/fineui from ~DAILER/fineui-decision:feature/x to feature/x

* commit 'c87867cf2ea6b0ff935d2620f5ecc2c86108125c':
  KERNEL-17875 fix: fineui Dep不能回收问题
master^2^2
Dailer-刘荣歆 9 months ago
parent
commit
f4a5e2e574
  1. 15
      packages/fineui/src/fix/fix.compact.js
  2. 10
      packages/fineui/src/fix/fix.js

15
packages/fineui/src/fix/fix.compact.js

@ -76,7 +76,7 @@ function popTarget() {
export const Model = Fix.Model; export const Model = Fix.Model;
const oldWatch = Fix.watch; const oldWatch = Fix.watch;
Fix.watch = function(model, expOrFn, cb, options) { Fix.watch = function (model, expOrFn, cb, options) {
if (isPlainObject(cb)) { if (isPlainObject(cb)) {
options = cb; options = cb;
cb = cb.handler; cb = cb.handler;
@ -89,7 +89,7 @@ Fix.watch = function(model, expOrFn, cb, options) {
this, this,
model, model,
expOrFn, expOrFn,
function() { function () {
options && options.store && pushTarget(options.store); options && options.store && pushTarget(options.store);
let res; let res;
try { try {
@ -167,7 +167,7 @@ export function createStore() {
} }
const _init = Widget.prototype._init; const _init = Widget.prototype._init;
Widget.prototype._init = function() { Widget.prototype._init = function () {
const needPop = createStore.call(this); const needPop = createStore.call(this);
try { try {
_init.apply(this, arguments); _init.apply(this, arguments);
@ -178,7 +178,7 @@ Widget.prototype._init = function() {
}; };
const __initWatch = Widget.prototype.__initWatch; const __initWatch = Widget.prototype.__initWatch;
Widget.prototype.__initWatch = function() { Widget.prototype.__initWatch = function () {
__initWatch.apply(this, arguments); __initWatch.apply(this, arguments);
const workerMode = const workerMode =
Providers.getProvider("bi.provider.system").getWorkerMode(); Providers.getProvider("bi.provider.system").getWorkerMode();
@ -191,7 +191,7 @@ Widget.prototype.__initWatch = function() {
}; };
const unMount = Widget.prototype.__destroy; const unMount = Widget.prototype.__destroy;
Widget.prototype.__destroy = function() { Widget.prototype.__destroy = function () {
try { try {
unMount.apply(this, arguments); unMount.apply(this, arguments);
} catch (e) { } catch (e) {
@ -204,6 +204,7 @@ Widget.prototype.__destroy = function() {
unwatch(); unwatch();
}); });
}); });
Fix.cleanupDeps();
this._watchers && (this._watchers = []); this._watchers && (this._watchers = []);
if (this.store) { if (this.store) {
this.store._parent && (this.store._parent = null); this.store._parent && (this.store._parent = null);
@ -213,7 +214,7 @@ Widget.prototype.__destroy = function() {
delete this.__cacheStore; delete this.__cacheStore;
}; };
Widget.prototype.__watch = function(getter, handler, options) { Widget.prototype.__watch = function (getter, handler, options) {
this._watchers = this._watchers || []; this._watchers = this._watchers || [];
const watcher = new Fix.Watcher( const watcher = new Fix.Watcher(
null, null,
@ -235,7 +236,7 @@ Widget.prototype.__watch = function(getter, handler, options) {
_.each(["_render", "__afterRender", "_mount", "__afterMount"], (name) => { _.each(["_render", "__afterRender", "_mount", "__afterMount"], (name) => {
const old = Widget.prototype[name]; const old = Widget.prototype[name];
old && old &&
(Widget.prototype[name] = function() { (Widget.prototype[name] = function () {
this.store && pushTarget(this.store); this.store && pushTarget(this.store);
let res; let res;
try { try {

10
packages/fineui/src/fix/fix.js

@ -110,7 +110,15 @@ function isExtensible(obj) {
function remove(arr, item) { function remove(arr, item) {
if (arr && arr.length) { if (!arr) {
return;
}
const len = arr.length;
if (len) {
if (item === arr[len - 1]) {
arr.length = len - 1;
return;
}
const index = arr.indexOf(item); const index = arr.indexOf(item);
if (index > -1) { if (index > -1) {
return arr.splice(index, 1); return arr.splice(index, 1);

Loading…
Cancel
Save