@tarojs/runtime 3.6.0-beta.2 → 3.6.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,6 +44,7 @@ export declare const ON_SHOW = "onShow";
44
44
  export declare const ON_HIDE = "onHide";
45
45
  export declare const OPTIONS = "options";
46
46
  export declare const EXTERNAL_CLASSES = "externalClasses";
47
+ export declare const EVENT_CALLBACK_RESULT = "e_result";
47
48
  export declare const BEHAVIORS = "behaviors";
48
49
  export declare const A = "a";
49
50
  /**
@@ -20,4 +20,4 @@ export declare class TaroEvent {
20
20
  get currentTarget(): any;
21
21
  }
22
22
  export declare function createEvent(event: MpEvent | string, node?: TaroElement): TaroEvent;
23
- export declare function eventHandler(event: MpEvent): void;
23
+ export declare function eventHandler(event: MpEvent): any;
@@ -127,7 +127,7 @@ declare class TaroEvent {
127
127
  }
128
128
  declare function createEvent(event: MpEvent | string, node?: TaroElement): TaroEvent;
129
129
  // 小程序的事件代理回调函数
130
- declare function eventHandler(event: MpEvent): void;
130
+ declare function eventHandler(event: MpEvent): any;
131
131
  declare class FormElement extends TaroElement {
132
132
  get value(): string | boolean | number | any[];
133
133
  set value(val: string | boolean | number | any[]);
@@ -43,6 +43,7 @@ const ON_SHOW = 'onShow';
43
43
  const ON_HIDE = 'onHide';
44
44
  const OPTIONS = 'options';
45
45
  const EXTERNAL_CLASSES = 'externalClasses';
46
+ const EVENT_CALLBACK_RESULT = 'e_result';
46
47
  const BEHAVIORS = 'behaviors';
47
48
  const A = 'a';
48
49
  /**
@@ -464,7 +465,7 @@ class TaroEventTarget {
464
465
  // 因此每次绑定事件都新建一个函数,如果带来了性能问题,可以把这段逻辑抽取到 PReact 插件中。
465
466
  const oldHandler = handler;
466
467
  handler = function () {
467
- oldHandler.apply(this, arguments); // this 指向 Element
468
+ return oldHandler.apply(this, arguments); // this 指向 Element
468
469
  };
469
470
  handler.oldHandler = oldHandler;
470
471
  const handlers = this.__handlers[type];
@@ -1368,6 +1369,9 @@ class TaroElement extends TaroNode {
1368
1369
  if ((result === false || event._end) && cancelable) {
1369
1370
  event.defaultPrevented = true;
1370
1371
  }
1372
+ if (!isUndefined(result) && event.mpEvent) {
1373
+ event.mpEvent[EVENT_CALLBACK_RESULT] = result;
1374
+ }
1371
1375
  if (event._end && event._stop) {
1372
1376
  break;
1373
1377
  }
@@ -2427,6 +2431,13 @@ function createEvent(event, node) {
2427
2431
  return domEv;
2428
2432
  }
2429
2433
  const eventsBatch = {};
2434
+ function getEventCBResult(event) {
2435
+ const result = event[EVENT_CALLBACK_RESULT];
2436
+ if (!isUndefined(result)) {
2437
+ delete event[EVENT_CALLBACK_RESULT];
2438
+ }
2439
+ return result;
2440
+ }
2430
2441
  // 小程序的事件代理回调函数
2431
2442
  function eventHandler(event) {
2432
2443
  var _a, _b;
@@ -2461,6 +2472,7 @@ function eventHandler(event) {
2461
2472
  }
2462
2473
  dispatch();
2463
2474
  });
2475
+ return getEventCBResult(event);
2464
2476
  }
2465
2477
  else {
2466
2478
  // 如果上层组件也有绑定同类型的组件,委托给上层组件调用事件回调
@@ -2469,6 +2481,7 @@ function eventHandler(event) {
2469
2481
  }
2470
2482
  else {
2471
2483
  dispatch();
2484
+ return getEventCBResult(event);
2472
2485
  }
2473
2486
  }
2474
2487
  }