@tarojs/plugin-framework-react 3.4.1 → 3.4.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.
package/dist/runtime.js CHANGED
@@ -1,9 +1,18 @@
1
- import { Current, incrementId, container, SERVICE_IDENTIFIER, document, getPageInstance, injectPageInstance, safeExecute, eventHandler, addLeadingSlash } from '@tarojs/runtime';
2
- import { isFunction, isArray, EMPTY_OBJ, ensure } from '@tarojs/shared';
1
+ import { Current, getPageInstance, injectPageInstance, incrementId, container, SERVICE_IDENTIFIER, document, safeExecute, eventHandler, addLeadingSlash } from '@tarojs/runtime';
2
+ import { EMPTY_OBJ, isFunction, isArray, ensure } from '@tarojs/shared';
3
+
4
+ const reactMeta = {
5
+ PageContext: EMPTY_OBJ,
6
+ R: EMPTY_OBJ
7
+ };
3
8
 
4
9
  const HOOKS_APP_ID = 'taro-app';
5
10
  function isClassComponent(R, component) {
11
+ var _a;
6
12
  const prototype = component.prototype;
13
+ // For React Redux
14
+ if ((_a = component.displayName) === null || _a === void 0 ? void 0 : _a.includes('Connect'))
15
+ return false;
7
16
  return (isFunction(component.render) ||
8
17
  !!(prototype === null || prototype === void 0 ? void 0 : prototype.isReactComponent) ||
9
18
  prototype instanceof R.Component // compat for some others react-like library
@@ -33,14 +42,94 @@ function setRouterParams(options) {
33
42
  Current.router = Object.assign({ params: options === null || options === void 0 ? void 0 : options.query }, options);
34
43
  }
35
44
 
36
- // 初始值设置为 any 主要是为了过 TS 的校验
37
- let PageContext = EMPTY_OBJ;
38
- let R$1 = EMPTY_OBJ;
45
+ const taroHooks = (lifecycle) => {
46
+ return (fn) => {
47
+ const { R: React, PageContext } = reactMeta;
48
+ const id = React.useContext(PageContext) || HOOKS_APP_ID;
49
+ // hold fn ref and keep up to date
50
+ const fnRef = React.useRef(fn);
51
+ if (fnRef.current !== fn)
52
+ fnRef.current = fn;
53
+ React.useLayoutEffect(() => {
54
+ let inst = getPageInstance(id);
55
+ let first = false;
56
+ if (inst == null) {
57
+ first = true;
58
+ inst = Object.create(null);
59
+ }
60
+ inst = inst;
61
+ // callback is immutable but inner function is up to date
62
+ const callback = (...args) => fnRef.current(...args);
63
+ if (isFunction(inst[lifecycle])) {
64
+ inst[lifecycle] = [inst[lifecycle], callback];
65
+ }
66
+ else {
67
+ inst[lifecycle] = [
68
+ ...(inst[lifecycle] || []),
69
+ callback
70
+ ];
71
+ }
72
+ if (first) {
73
+ injectPageInstance(inst, id);
74
+ }
75
+ return () => {
76
+ const inst = getPageInstance(id);
77
+ const list = inst[lifecycle];
78
+ if (list === callback) {
79
+ inst[lifecycle] = undefined;
80
+ }
81
+ else if (isArray(list)) {
82
+ inst[lifecycle] = list.filter(item => item !== callback);
83
+ }
84
+ };
85
+ }, []);
86
+ };
87
+ };
88
+ const useDidShow = taroHooks('componentDidShow');
89
+ const useDidHide = taroHooks('componentDidHide');
90
+ const usePullDownRefresh = taroHooks('onPullDownRefresh');
91
+ const useReachBottom = taroHooks('onReachBottom');
92
+ const usePageScroll = taroHooks('onPageScroll');
93
+ const useResize = taroHooks('onResize');
94
+ const useShareAppMessage = taroHooks('onShareAppMessage');
95
+ const useTabItemTap = taroHooks('onTabItemTap');
96
+ const useTitleClick = taroHooks('onTitleClick');
97
+ const useOptionMenuClick = taroHooks('onOptionMenuClick');
98
+ const usePullIntercept = taroHooks('onPullIntercept');
99
+ const useShareTimeline = taroHooks('onShareTimeline');
100
+ const useAddToFavorites = taroHooks('onAddToFavorites');
101
+ const useReady = taroHooks('onReady');
102
+ const useRouter = (dynamic = false) => {
103
+ const React = reactMeta.R;
104
+ return dynamic ? Current.router : React.useMemo(() => Current.router, []);
105
+ };
106
+ const useScope = () => undefined;
107
+
108
+ var taroHooks$1 = /*#__PURE__*/Object.freeze({
109
+ __proto__: null,
110
+ useDidShow: useDidShow,
111
+ useDidHide: useDidHide,
112
+ usePullDownRefresh: usePullDownRefresh,
113
+ useReachBottom: useReachBottom,
114
+ usePageScroll: usePageScroll,
115
+ useResize: useResize,
116
+ useShareAppMessage: useShareAppMessage,
117
+ useTabItemTap: useTabItemTap,
118
+ useTitleClick: useTitleClick,
119
+ useOptionMenuClick: useOptionMenuClick,
120
+ usePullIntercept: usePullIntercept,
121
+ useShareTimeline: useShareTimeline,
122
+ useAddToFavorites: useAddToFavorites,
123
+ useReady: useReady,
124
+ useRouter: useRouter,
125
+ useScope: useScope
126
+ });
127
+
39
128
  let h$1;
40
129
  let ReactDOM$1;
41
130
  const pageKeyId = incrementId();
42
131
  const hooks$1 = container.get(SERVICE_IDENTIFIER.Hooks);
43
- function setReconciler() {
132
+ function setReconciler(ReactDOM) {
44
133
  var _a;
45
134
  hooks$1.getLifecycle = function (instance, lifecycle) {
46
135
  lifecycle = lifecycle.replace(/^on(Show|Hide)$/, 'componentDid$1');
@@ -50,7 +139,7 @@ function setReconciler() {
50
139
  event.type = event.type.replace(/-/g, '');
51
140
  });
52
141
  hooks$1.batchedEventUpdates = function (cb) {
53
- ReactDOM$1.unstable_batchedUpdates(cb);
142
+ ReactDOM.unstable_batchedUpdates(cb);
54
143
  };
55
144
  hooks$1.mergePageInstance = function (prev, next) {
56
145
  if (!prev || !next)
@@ -79,7 +168,7 @@ function setReconciler() {
79
168
  });
80
169
  };
81
170
  hooks$1.getDOMNode = inst => {
82
- return ReactDOM$1.findDOMNode(inst);
171
+ return ReactDOM.findDOMNode(inst);
83
172
  };
84
173
  }
85
174
  }
@@ -93,8 +182,8 @@ function connectReactPage(R, id) {
93
182
  // 兼容 react-redux 7.20.1+
94
183
  reactReduxForwardedRef: inject
95
184
  };
96
- if (PageContext === EMPTY_OBJ) {
97
- PageContext = R.createContext('');
185
+ if (reactMeta.PageContext === EMPTY_OBJ) {
186
+ reactMeta.PageContext = R.createContext('');
98
187
  }
99
188
  return class PageWrapper extends R.Component {
100
189
  constructor() {
@@ -118,7 +207,7 @@ function connectReactPage(R, id) {
118
207
  render() {
119
208
  const children = this.state.hasError
120
209
  ? []
121
- : h$1(PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs)));
210
+ : h$1(reactMeta.PageContext.Provider, { value: id }, h$1(Page, Object.assign(Object.assign({}, this.props), refs)));
122
211
  if (process.env.TARO_ENV === 'h5') {
123
212
  return h$1('div', { id, className: 'taro_page' }, children);
124
213
  }
@@ -142,17 +231,17 @@ function createReactApp(App, react, dom, config) {
142
231
  if (process.env.NODE_ENV !== 'production') {
143
232
  ensure(!!dom, '构建 React/Nerv 项目请把 process.env.FRAMEWORK 设置为 \'react\'/\'nerv\' ');
144
233
  }
145
- R$1 = react;
234
+ reactMeta.R = react;
146
235
  h$1 = react.createElement;
147
236
  ReactDOM$1 = dom;
148
237
  const appInstanceRef = react.createRef();
149
- const isReactComponent = isClassComponent(R$1, App);
238
+ const isReactComponent = isClassComponent(react, App);
150
239
  let appWrapper;
151
- setReconciler();
240
+ setReconciler(ReactDOM$1);
152
241
  function getAppInstance() {
153
242
  return appInstanceRef.current;
154
243
  }
155
- class AppWrapper extends R$1.Component {
244
+ class AppWrapper extends react.Component {
156
245
  constructor() {
157
246
  super(...arguments);
158
247
  // run createElement() inside the render function to make sure that owner is right
@@ -160,7 +249,7 @@ function createReactApp(App, react, dom, config) {
160
249
  this.elements = [];
161
250
  }
162
251
  mount(pageComponent, id, cb) {
163
- const pageWrapper = connectReactPage(R$1, id)(pageComponent);
252
+ const pageWrapper = connectReactPage(react, id)(pageComponent);
164
253
  const key = id + pageKeyId();
165
254
  const page = () => h$1(pageWrapper, { key, tid: id });
166
255
  this.pages.push(page);
@@ -288,89 +377,7 @@ function createReactApp(App, react, dom, config) {
288
377
  return appObj;
289
378
  }
290
379
 
291
- const taroHooks = (lifecycle) => {
292
- return (fn) => {
293
- const id = R$1.useContext(PageContext) || HOOKS_APP_ID;
294
- // hold fn ref and keep up to date
295
- const fnRef = R$1.useRef(fn);
296
- if (fnRef.current !== fn)
297
- fnRef.current = fn;
298
- R$1.useLayoutEffect(() => {
299
- let inst = getPageInstance(id);
300
- let first = false;
301
- if (inst == null) {
302
- first = true;
303
- inst = Object.create(null);
304
- }
305
- inst = inst;
306
- // callback is immutable but inner function is up to date
307
- const callback = (...args) => fnRef.current(...args);
308
- if (isFunction(inst[lifecycle])) {
309
- inst[lifecycle] = [inst[lifecycle], callback];
310
- }
311
- else {
312
- inst[lifecycle] = [
313
- ...(inst[lifecycle] || []),
314
- callback
315
- ];
316
- }
317
- if (first) {
318
- injectPageInstance(inst, id);
319
- }
320
- return () => {
321
- const inst = getPageInstance(id);
322
- const list = inst[lifecycle];
323
- if (list === callback) {
324
- inst[lifecycle] = undefined;
325
- }
326
- else if (isArray(list)) {
327
- inst[lifecycle] = list.filter(item => item !== callback);
328
- }
329
- };
330
- }, []);
331
- };
332
- };
333
- const useDidShow = taroHooks('componentDidShow');
334
- const useDidHide = taroHooks('componentDidHide');
335
- const usePullDownRefresh = taroHooks('onPullDownRefresh');
336
- const useReachBottom = taroHooks('onReachBottom');
337
- const usePageScroll = taroHooks('onPageScroll');
338
- const useResize = taroHooks('onResize');
339
- const useShareAppMessage = taroHooks('onShareAppMessage');
340
- const useTabItemTap = taroHooks('onTabItemTap');
341
- const useTitleClick = taroHooks('onTitleClick');
342
- const useOptionMenuClick = taroHooks('onOptionMenuClick');
343
- const usePullIntercept = taroHooks('onPullIntercept');
344
- const useShareTimeline = taroHooks('onShareTimeline');
345
- const useAddToFavorites = taroHooks('onAddToFavorites');
346
- const useReady = taroHooks('onReady');
347
- const useRouter = (dynamic = false) => {
348
- return dynamic ? Current.router : R$1.useMemo(() => Current.router, []);
349
- };
350
- const useScope = () => undefined;
351
-
352
- var taroHooks$1 = /*#__PURE__*/Object.freeze({
353
- __proto__: null,
354
- useDidShow: useDidShow,
355
- useDidHide: useDidHide,
356
- usePullDownRefresh: usePullDownRefresh,
357
- useReachBottom: useReachBottom,
358
- usePageScroll: usePageScroll,
359
- useResize: useResize,
360
- useShareAppMessage: useShareAppMessage,
361
- useTabItemTap: useTabItemTap,
362
- useTitleClick: useTitleClick,
363
- useOptionMenuClick: useOptionMenuClick,
364
- usePullIntercept: usePullIntercept,
365
- useShareTimeline: useShareTimeline,
366
- useAddToFavorites: useAddToFavorites,
367
- useReady: useReady,
368
- useRouter: useRouter,
369
- useScope: useScope
370
- });
371
-
372
380
  const getNativeCompId = incrementId();
373
- let R;
374
381
  let h;
375
382
  let ReactDOM;
376
383
  function initNativeComponentEntry(R, ReactDOM) {
@@ -409,13 +416,16 @@ function initNativeComponentEntry(R, ReactDOM) {
409
416
  forwardedRef: inject,
410
417
  reactReduxForwardedRef: inject
411
418
  };
419
+ if (reactMeta.PageContext === EMPTY_OBJ) {
420
+ reactMeta.PageContext = R.createContext('');
421
+ }
412
422
  const item = {
413
423
  compId,
414
424
  element: h(NativeComponentWrapper, {
415
425
  key: compId,
416
426
  getCtx,
417
427
  renderComponent(ctx) {
418
- return h(Component, Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs));
428
+ return h(reactMeta.PageContext.Provider, { value: compId }, h(Component, Object.assign(Object.assign(Object.assign({}, (ctx.data || (ctx.data = {})).props), refs), { $scope: ctx })));
419
429
  }
420
430
  })
421
431
  };
@@ -436,15 +446,16 @@ function initNativeComponentEntry(R, ReactDOM) {
436
446
  return (components.map(({ element }) => element));
437
447
  }
438
448
  }
439
- setReconciler();
449
+ setReconciler(ReactDOM);
440
450
  const app = document.getElementById('app');
441
451
  ReactDOM.render(h(Entry, {}), app);
442
452
  }
443
453
  function createNativeComponentConfig(Component, react, reactdom, componentConfig) {
444
- R = react;
454
+ var _a, _b;
455
+ reactMeta.R = react;
445
456
  h = react.createElement;
446
457
  ReactDOM = reactdom;
447
- setReconciler();
458
+ setReconciler(ReactDOM);
448
459
  const componentObj = {
449
460
  options: componentConfig,
450
461
  properties: {
@@ -458,7 +469,7 @@ function createNativeComponentConfig(Component, react, reactdom, componentConfig
458
469
  },
459
470
  created() {
460
471
  if (!Current.app) {
461
- initNativeComponentEntry(R, ReactDOM);
472
+ initNativeComponentEntry(react, ReactDOM);
462
473
  }
463
474
  },
464
475
  attached() {
@@ -515,6 +526,29 @@ function createNativeComponentConfig(Component, react, reactdom, componentConfig
515
526
  });
516
527
  }
517
528
  }
529
+ // onShareAppMessage 和 onShareTimeline 一样,会影响小程序右上方按钮的选项,因此不能默认注册。
530
+ if (Component.onShareAppMessage ||
531
+ ((_a = Component.prototype) === null || _a === void 0 ? void 0 : _a.onShareAppMessage) ||
532
+ Component.enableShareAppMessage) {
533
+ componentObj.methods.onShareAppMessage = function (options) {
534
+ const target = options === null || options === void 0 ? void 0 : options.target;
535
+ if (target) {
536
+ const id = target.id;
537
+ const element = document.getElementById(id);
538
+ if (element) {
539
+ target.dataset = element.dataset;
540
+ }
541
+ }
542
+ return safeExecute(this.compId, 'onShareAppMessage', options);
543
+ };
544
+ }
545
+ if (Component.onShareTimeline ||
546
+ ((_b = Component.prototype) === null || _b === void 0 ? void 0 : _b.onShareTimeline) ||
547
+ Component.enableShareTimeline) {
548
+ componentObj.methods.onShareTimeline = function () {
549
+ return safeExecute(this.compId, 'onShareTimeline');
550
+ };
551
+ }
518
552
  return componentObj;
519
553
  }
520
554
 
@@ -529,6 +563,7 @@ hooks.initNativeApiImpls.push(function (taro) {
529
563
  if (__TARO_FRAMEWORK__ === 'preact') {
530
564
  const options = require('preact').options;
531
565
  const oldVNodeHook = options.vnode;
566
+ const oldDiffedHook = options.diffed;
532
567
  options.vnode = vnode => {
533
568
  const { type, props } = vnode;
534
569
  let normalizedProps = props;
@@ -547,6 +582,22 @@ if (__TARO_FRAMEWORK__ === 'preact') {
547
582
  if (oldVNodeHook)
548
583
  oldVNodeHook(vnode);
549
584
  };
585
+ options.diffed = function (newVNode) {
586
+ const dom = newVNode._dom;
587
+ const newVNodeProps = newVNode.props;
588
+ if (dom) { /** ElementNode */
589
+ for (const propName in newVNodeProps) {
590
+ const propValue = newVNodeProps[propName];
591
+ if (propValue === false && dom.props[propName] === undefined) {
592
+ // 值为 false 的属性在 Preact 的 diff 中被 removeAttribute 了,这里手动 setAttribute
593
+ // fix https://github.com/NervJS/taro/issues/11197
594
+ dom.setAttribute(propName, propValue);
595
+ }
596
+ }
597
+ }
598
+ if (oldDiffedHook)
599
+ oldDiffedHook(newVNode);
600
+ };
550
601
  (_a = hooks.modifyMpEventImpls) === null || _a === void 0 ? void 0 : _a.push(e => {
551
602
  const type = e.type;
552
603
  if (type === 'tap') {
@@ -564,5 +615,5 @@ if (__TARO_FRAMEWORK__ === 'preact') {
564
615
  // })
565
616
  }
566
617
 
567
- export { PageContext, R$1 as R, connectReactPage, createNativeComponentConfig, createReactApp, setReconciler, useAddToFavorites, useDidHide, useDidShow, useOptionMenuClick, usePageScroll, usePullDownRefresh, usePullIntercept, useReachBottom, useReady, useResize, useRouter, useScope, useShareAppMessage, useShareTimeline, useTabItemTap, useTitleClick };
618
+ export { connectReactPage, createNativeComponentConfig, createReactApp, setReconciler, useAddToFavorites, useDidHide, useDidShow, useOptionMenuClick, usePageScroll, usePullDownRefresh, usePullIntercept, useReachBottom, useReady, useResize, useRouter, useScope, useShareAppMessage, useShareTimeline, useTabItemTap, useTitleClick };
568
619
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sources":["../src/runtime/utils.ts","../src/runtime/connect.ts","../src/runtime/hooks.ts","../src/runtime/connect-native.ts","../src/runtime/index.ts"],"sourcesContent":["import { isArray, isFunction } from '@tarojs/shared'\nimport { Current } from '@tarojs/runtime'\n\nimport type * as React from 'react'\n\nexport const HOOKS_APP_ID = 'taro-app'\n\nexport function isClassComponent (R: typeof React, component): boolean {\n const prototype = component.prototype\n\n return (\n isFunction(component.render) ||\n !!prototype?.isReactComponent ||\n prototype instanceof R.Component // compat for some others react-like library\n )\n}\n\nexport function ensureIsArray<T> (item: T | T[]): T[] {\n if (isArray(item)) {\n return item\n } else {\n return item ? [item] : []\n }\n}\n\n/**\n * set writable, enumerable to true\n */\nexport function setDefaultDescriptor (obj: Record<string, any>) {\n obj.writable = true\n obj.enumerable = true\n return obj\n}\n\n/**\n * 设置入口的路由参数\n * @param options 小程序传入的参数\n */\nexport function setRouterParams (options) {\n Current.router = {\n params: options?.query,\n ...options\n }\n}\n","import { ensure, EMPTY_OBJ } from '@tarojs/shared'\nimport {\n container,\n SERVICE_IDENTIFIER,\n Current,\n document,\n getPageInstance,\n injectPageInstance,\n incrementId\n} from '@tarojs/runtime'\nimport { isClassComponent, ensureIsArray, setDefaultDescriptor, setRouterParams, HOOKS_APP_ID } from './utils'\n\nimport type * as React from 'react'\nimport type { AppConfig } from '@tarojs/taro'\nimport type {\n IHooks,\n AppInstance,\n Instance,\n ReactAppInstance,\n ReactPageComponent,\n PageProps\n} from '@tarojs/runtime'\n\ntype PageComponent = React.CElement<PageProps, React.Component<PageProps, any, any>>\n\n// 初始值设置为 any 主要是为了过 TS 的校验\nexport let PageContext: React.Context<string> = EMPTY_OBJ\nexport let R: typeof React = EMPTY_OBJ\nlet h: typeof React.createElement\nlet ReactDOM\n\nconst pageKeyId = incrementId()\nconst hooks = container.get<IHooks>(SERVICE_IDENTIFIER.Hooks)\n\nexport function setReconciler () {\n hooks.getLifecycle = function (instance, lifecycle: string) {\n lifecycle = lifecycle.replace(/^on(Show|Hide)$/, 'componentDid$1')\n return instance[lifecycle]\n }\n\n hooks.modifyMpEventImpls?.push(function (event) {\n event.type = event.type.replace(/-/g, '')\n })\n\n hooks.batchedEventUpdates = function (cb) {\n ReactDOM.unstable_batchedUpdates(cb)\n }\n\n hooks.mergePageInstance = function (prev, next) {\n if (!prev || !next) return\n\n // 子组件使用 lifecycle hooks 注册了生命周期后,会存在 prev,里面是注册的生命周期回调。\n\n // prev 使用 Object.create(null) 创建,H5 的 fast-refresh 可能也会导致存在 prev,要排除这些意外产生的 prev\n if ('constructor' in prev) return\n\n Object.keys(prev).forEach(item => {\n const prevList = prev[item]\n const nextList = ensureIsArray<() => any>(next[item])\n next[item] = nextList.concat(prevList)\n })\n }\n\n if (process.env.TARO_ENV === 'h5') {\n hooks.createPullDownComponent = (\n el: React.FunctionComponent<PageProps> | React.ComponentClass<PageProps>,\n _,\n R: typeof React,\n customWrapper\n ) => {\n const isReactComponent = isClassComponent(R, el)\n\n return R.forwardRef((props, ref) => {\n const newProps: React.Props<any> = { ...props }\n const refs = isReactComponent ? { ref: ref } : {\n forwardedRef: ref,\n // 兼容 react-redux 7.20.1+\n reactReduxForwardedRef: ref\n }\n\n return h(\n customWrapper || 'taro-pull-to-refresh',\n null,\n h(el, {\n ...newProps,\n ...refs\n })\n )\n })\n }\n\n hooks.getDOMNode = inst => {\n return ReactDOM.findDOMNode(inst)\n }\n }\n}\n\nexport function connectReactPage (\n R: typeof React,\n id: string\n) {\n return (Page: ReactPageComponent): React.ComponentClass<PageProps> => {\n // eslint-disable-next-line dot-notation\n const isReactComponent = isClassComponent(R, Page)\n const inject = (node?: Instance) => node && injectPageInstance(node, id)\n const refs = isReactComponent ? { ref: inject } : {\n forwardedRef: inject,\n // 兼容 react-redux 7.20.1+\n reactReduxForwardedRef: inject\n }\n\n if (PageContext === EMPTY_OBJ) {\n PageContext = R.createContext('')\n }\n\n return class PageWrapper extends R.Component<PageProps, { hasError: boolean }> {\n state = {\n hasError: false\n }\n\n static getDerivedStateFromError (error: Error) {\n process.env.NODE_ENV !== 'production' && console.warn(error)\n return { hasError: true }\n }\n\n // React 16 uncaught error 会导致整个应用 crash,\n // 目前把错误缩小到页面\n componentDidCatch (error: Error, info: React.ErrorInfo) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(error)\n console.error(info.componentStack)\n }\n }\n\n render () {\n const children = this.state.hasError\n ? []\n : h(PageContext.Provider, { value: id }, h(Page, {\n ...this.props,\n ...refs\n }))\n\n if (process.env.TARO_ENV === 'h5') {\n return h(\n 'div',\n { id, className: 'taro_page' },\n children\n )\n } else {\n return h(\n 'root',\n { id },\n children\n )\n }\n }\n }\n }\n}\n\n/**\n * 桥接小程序 App 构造器和 React 渲染流程\n * @param App 用户编写的入口组件\n * @param react 框架\n * @param dom 框架渲染器\n * @param config 入口组件配置 app.config.js 的内容\n * @returns 传递给 App 构造器的对象 obj :App(obj)\n */\nexport function createReactApp (\n App: React.ComponentClass,\n react: typeof React,\n dom,\n config: AppConfig\n) {\n if (process.env.NODE_ENV !== 'production') {\n ensure(!!dom, '构建 React/Nerv 项目请把 process.env.FRAMEWORK 设置为 \\'react\\'/\\'nerv\\' ')\n }\n\n R = react\n h = react.createElement\n ReactDOM = dom\n const appInstanceRef = react.createRef<ReactAppInstance>()\n const isReactComponent = isClassComponent(R, App)\n let appWrapper: AppWrapper\n\n setReconciler()\n\n function getAppInstance (): ReactAppInstance | null {\n return appInstanceRef.current\n }\n\n class AppWrapper extends R.Component {\n // run createElement() inside the render function to make sure that owner is right\n private pages: Array<() => PageComponent> = []\n private elements: Array<PageComponent> = []\n\n public mount (pageComponent: ReactPageComponent, id: string, cb: () => void) {\n const pageWrapper = connectReactPage(R, id)(pageComponent)\n const key = id + pageKeyId()\n const page = () => h(pageWrapper, { key, tid: id })\n this.pages.push(page)\n this.forceUpdate(cb)\n }\n\n public unmount (id: string, cb: () => void) {\n const elements = this.elements\n const idx = elements.findIndex(item => item.props.tid === id)\n elements.splice(idx, 1)\n this.forceUpdate(cb)\n }\n\n public render () {\n const { pages, elements } = this\n\n while (pages.length > 0) {\n const page = pages.pop()!\n elements.push(page())\n }\n\n let props: React.Props<any> | null = null\n\n if (isReactComponent) {\n props = { ref: appInstanceRef }\n }\n\n return h(\n App,\n props,\n process.env.TARO_ENV === 'h5' ? h('div', null, elements.slice()) : elements.slice()\n )\n }\n }\n\n if (process.env.TARO_ENV !== 'h5') {\n appWrapper = ReactDOM.render?.(h(AppWrapper), document.getElementById('app'))\n }\n\n const [ONLAUNCH, ONSHOW, ONHIDE] = hooks.getMiniLifecycleImpl().app\n\n const appObj: AppInstance = Object.create({\n render (cb: () => void) {\n appWrapper.forceUpdate(cb)\n },\n\n mount (component: ReactPageComponent, id: string, cb: () => void) {\n appWrapper.mount(component, id, cb)\n },\n\n unmount (id: string, cb: () => void) {\n appWrapper.unmount(id, cb)\n }\n }, {\n config: setDefaultDescriptor({\n configurable: true,\n value: config\n }),\n\n [ONLAUNCH]: setDefaultDescriptor({\n value (options) {\n setRouterParams(options)\n\n if (process.env.TARO_ENV === 'h5') {\n // 由于 H5 路由初始化的时候会清除 app 下的 dom 元素,所以需要在路由初始化后执行 render\n appWrapper = ReactDOM.render?.(h(AppWrapper), document.getElementById(config?.appId || 'app'))\n }\n\n // 用户编写的入口组件实例\n const app = getAppInstance()\n this.$app = app\n\n if (app) {\n // 把 App Class 上挂载的额外属性同步到全局 app 对象中\n if (app.taroGlobalData) {\n const globalData = app.taroGlobalData\n const keys = Object.keys(globalData)\n const descriptors = Object.getOwnPropertyDescriptors(globalData)\n keys.forEach(key => {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: true,\n get () {\n return globalData[key]\n },\n set (value) {\n globalData[key] = value\n }\n })\n })\n Object.defineProperties(this, descriptors)\n }\n\n app.onLaunch?.(options)\n }\n }\n }),\n\n [ONSHOW]: setDefaultDescriptor({\n value (options) {\n setRouterParams(options)\n\n /**\n * trigger lifecycle\n */\n const app = getAppInstance()\n // class component, componentDidShow\n app?.componentDidShow?.(options)\n // functional component, useDidShow\n triggerAppHook('onShow', options)\n }\n }),\n\n [ONHIDE]: setDefaultDescriptor({\n value () {\n /**\n * trigger lifecycle\n */\n const app = getAppInstance()\n // class component, componentDidHide\n app?.componentDidHide?.()\n // functional component, useDidHide\n triggerAppHook('onHide')\n }\n }),\n\n onPageNotFound: setDefaultDescriptor({\n value (res: unknown) {\n const app = getAppInstance()\n app?.onPageNotFound?.(res)\n }\n })\n })\n\n function triggerAppHook (lifecycle, ...option) {\n const instance = getPageInstance(HOOKS_APP_ID)\n if (instance) {\n const app = getAppInstance()\n const func = hooks.getLifecycle(instance, lifecycle)\n if (Array.isArray(func)) {\n func.forEach(cb => cb.apply(app, option))\n }\n }\n }\n\n Current.app = appObj\n return appObj\n}\n","import { isFunction, isArray } from '@tarojs/shared'\nimport {\n Current,\n getPageInstance,\n injectPageInstance\n} from '@tarojs/runtime'\nimport { PageContext, R as React } from './connect'\nimport { HOOKS_APP_ID } from './utils'\n\nimport type { Func, PageLifeCycle } from '@tarojs/runtime'\n\nconst taroHooks = (lifecycle: keyof PageLifeCycle) => {\n return (fn: Func) => {\n const id = React.useContext(PageContext) || HOOKS_APP_ID\n\n // hold fn ref and keep up to date\n const fnRef = React.useRef(fn)\n if (fnRef.current !== fn) fnRef.current = fn\n\n React.useLayoutEffect(() => {\n let inst = getPageInstance(id)\n let first = false\n if (inst == null) {\n first = true\n inst = Object.create(null)\n }\n\n inst = inst!\n\n // callback is immutable but inner function is up to date\n const callback = (...args: any) => fnRef.current(...args)\n\n if (isFunction(inst[lifecycle])) {\n (inst[lifecycle] as any) = [inst[lifecycle], callback]\n } else {\n (inst[lifecycle] as any) = [\n ...((inst[lifecycle] as any) || []),\n callback\n ]\n }\n\n if (first) {\n injectPageInstance(inst!, id)\n }\n return () => {\n const inst = getPageInstance(id)\n const list = inst![lifecycle]\n if (list === callback) {\n (inst![lifecycle] as any) = undefined\n } else if (isArray(list)) {\n (inst![lifecycle] as any) = list.filter(item => item !== callback)\n }\n }\n }, [])\n }\n}\n\nexport const useDidShow = taroHooks('componentDidShow')\n\nexport const useDidHide = taroHooks('componentDidHide')\n\nexport const usePullDownRefresh = taroHooks('onPullDownRefresh')\n\nexport const useReachBottom = taroHooks('onReachBottom')\n\nexport const usePageScroll = taroHooks('onPageScroll')\n\nexport const useResize = taroHooks('onResize')\n\nexport const useShareAppMessage = taroHooks('onShareAppMessage')\n\nexport const useTabItemTap = taroHooks('onTabItemTap')\n\nexport const useTitleClick = taroHooks('onTitleClick')\n\nexport const useOptionMenuClick = taroHooks('onOptionMenuClick')\n\nexport const usePullIntercept = taroHooks('onPullIntercept')\n\nexport const useShareTimeline = taroHooks('onShareTimeline')\n\nexport const useAddToFavorites = taroHooks('onAddToFavorites')\n\nexport const useReady = taroHooks('onReady')\n\nexport const useRouter = (dynamic = false) => {\n return dynamic ? Current.router : React.useMemo(() => Current.router, [])\n}\n\nexport const useScope = () => undefined\n","import {\n Current,\n document,\n injectPageInstance,\n safeExecute,\n addLeadingSlash,\n incrementId,\n eventHandler\n} from '@tarojs/runtime'\nimport { isClassComponent } from './utils'\nimport { setReconciler } from './connect'\n\nimport type * as React from 'react'\nimport type { PageInstance } from '@tarojs/taro'\nimport type {\n TaroRootElement,\n Instance\n} from '@tarojs/runtime'\n\ndeclare const getCurrentPages: () => PageInstance[]\n\nconst getNativeCompId = incrementId()\nlet R: typeof React\nlet h: typeof React.createElement\nlet ReactDOM\n\nfunction initNativeComponentEntry (R: typeof React, ReactDOM) {\n interface IEntryState {\n components: {\n compId: string\n element: React.ReactElement\n }[]\n }\n\n interface IWrapperProps {\n getCtx: () => any\n renderComponent: (ctx: any) => React.ReactElement\n }\n\n class NativeComponentWrapper extends R.Component<IWrapperProps, Record<any, any>> {\n root = R.createRef<TaroRootElement>()\n ctx = this.props.getCtx()\n\n componentDidMount () {\n this.ctx.component = this\n const rootElement = this.root.current!\n rootElement.ctx = this.ctx\n rootElement.performUpdate(true)\n }\n\n render () {\n return (\n h(\n 'root',\n {\n ref: this.root\n },\n this.props.renderComponent(this.ctx)\n )\n )\n }\n }\n\n class Entry extends R.Component<Record<any, any>, IEntryState> {\n state: IEntryState = {\n components: []\n }\n\n componentDidMount () {\n Current.app = this\n }\n\n mount (Component, compId, getCtx) {\n const isReactComponent = isClassComponent(R, Component)\n const inject = (node?: Instance) => node && injectPageInstance(node, compId)\n const refs = isReactComponent ? { ref: inject } : {\n forwardedRef: inject,\n reactReduxForwardedRef: inject\n }\n const item = {\n compId,\n element: h(NativeComponentWrapper, {\n key: compId,\n getCtx,\n renderComponent (ctx) {\n return h(Component, { ...(ctx.data ||= {}).props, ...refs })\n }\n })\n }\n this.setState({\n components: [...this.state.components, item]\n })\n }\n\n unmount (compId) {\n const components = this.state.components\n const index = components.findIndex(item => item.compId === compId)\n const next = [...components.slice(0, index), ...components.slice(index + 1)]\n this.setState({\n components: next\n })\n }\n\n render () {\n const components = this.state.components\n return (\n components.map(({ element }) => element)\n )\n }\n }\n\n setReconciler()\n\n const app = document.getElementById('app')\n\n ReactDOM.render(\n h(Entry, {}),\n app\n )\n}\n\nexport function createNativeComponentConfig (Component, react: typeof React, reactdom, componentConfig) {\n R = react\n h = react.createElement\n ReactDOM = reactdom\n\n setReconciler()\n\n const componentObj = {\n options: componentConfig,\n properties: {\n props: {\n type: null,\n value: null,\n observer (_newVal, oldVal) {\n oldVal && this.component.forceUpdate()\n }\n }\n },\n created () {\n if (!Current.app) {\n initNativeComponentEntry(R, ReactDOM)\n }\n },\n attached () {\n setCurrent()\n this.compId = getNativeCompId()\n this.config = componentConfig\n Current.app!.mount!(Component, this.compId, () => this)\n },\n ready () {\n safeExecute(this.compId, 'onReady')\n },\n detached () {\n Current.app!.unmount!(this.compId)\n },\n pageLifetimes: {\n show (options) {\n safeExecute(this.compId, 'onShow', options)\n },\n hide () {\n safeExecute(this.compId, 'onHide')\n }\n },\n methods: {\n eh: eventHandler\n }\n }\n\n function setCurrent () {\n const pages = getCurrentPages()\n const currentPage = pages[pages.length - 1]\n if (Current.page === currentPage) return\n\n Current.page = currentPage\n\n const route = (currentPage as any).route || (currentPage as any).__route__\n const router = {\n params: currentPage.options || {},\n path: addLeadingSlash(route),\n onReady: '',\n onHide: '',\n onShow: ''\n }\n Current.router = router\n\n if (!currentPage.options) {\n // 例如在微信小程序中,页面 options 的设置时机比组件 attached 慢\n Object.defineProperty(currentPage, 'options', {\n enumerable: true,\n configurable: true,\n get () {\n return this._optionsValue\n },\n set (value) {\n router.params = value\n this._optionsValue = value\n }\n })\n }\n }\n\n return componentObj\n}\n","import {\n container,\n SERVICE_IDENTIFIER\n} from '@tarojs/runtime'\nimport * as taroHooks from './hooks'\n\nimport type { IHooks } from '@tarojs/runtime'\n\ndeclare const __TARO_FRAMEWORK__: string\n\nconst hooks = container.get<IHooks>(SERVICE_IDENTIFIER.Hooks)\n\nhooks.initNativeApiImpls ||= []\nhooks.initNativeApiImpls.push(function (taro) {\n for (const hook in taroHooks) {\n taro[hook] = taroHooks[hook]\n }\n})\n\nif (__TARO_FRAMEWORK__ === 'preact') {\n const options = require('preact').options\n const oldVNodeHook = options.vnode\n options.vnode = vnode => {\n const { type, props } = vnode\n let normalizedProps = props\n\n // only normalize props on Element nodes\n if (typeof type === 'string') {\n normalizedProps = {}\n\n for (let i in props) {\n const value = props[i]\n\n if (/^on/.test(i)) {\n i = i.toLowerCase()\n }\n\n normalizedProps[i] = value\n }\n\n vnode.props = normalizedProps\n }\n\n if (oldVNodeHook) oldVNodeHook(vnode)\n }\n\n hooks.modifyMpEventImpls?.push(e => {\n const type = e.type\n if (type === 'tap') {\n e.type = 'click'\n } else if (type === 'focus') {\n // 兼容 preact/compat/src/render.js options.vnode 的处理逻辑\n e.type = 'focusin'\n } else if (type === 'blur') {\n e.type = 'focusout'\n }\n })\n // hooks.modifyDispatchEventImpls?.push(e => {\n // })\n}\n\nexport * from './hooks'\nexport * from './connect'\nexport * from './connect-native'\n"],"names":["R","h","ReactDOM","hooks","React","taroHooks"],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sources":["../src/runtime/react-meta.ts","../src/runtime/utils.ts","../src/runtime/hooks.ts","../src/runtime/connect.ts","../src/runtime/connect-native.ts","../src/runtime/index.ts"],"sourcesContent":["import { EMPTY_OBJ } from '@tarojs/shared'\n\nimport type * as React from 'react'\n\ninterface ReactMeta {\n PageContext: React.Context<string>\n R: typeof React\n}\n\nexport const reactMeta: ReactMeta = {\n PageContext: EMPTY_OBJ,\n R: EMPTY_OBJ\n}\n","import { isArray, isFunction } from '@tarojs/shared'\nimport { Current } from '@tarojs/runtime'\n\nimport type * as React from 'react'\n\nexport const HOOKS_APP_ID = 'taro-app'\n\nexport function isClassComponent (R: typeof React, component): boolean {\n const prototype = component.prototype\n\n // For React Redux\n if (component.displayName?.includes('Connect')) return false\n\n return (\n isFunction(component.render) ||\n !!prototype?.isReactComponent ||\n prototype instanceof R.Component // compat for some others react-like library\n )\n}\n\nexport function ensureIsArray<T> (item: T | T[]): T[] {\n if (isArray(item)) {\n return item\n } else {\n return item ? [item] : []\n }\n}\n\n/**\n * set writable, enumerable to true\n */\nexport function setDefaultDescriptor (obj: Record<string, any>) {\n obj.writable = true\n obj.enumerable = true\n return obj\n}\n\n/**\n * 设置入口的路由参数\n * @param options 小程序传入的参数\n */\nexport function setRouterParams (options) {\n Current.router = {\n params: options?.query,\n ...options\n }\n}\n","import { isFunction, isArray } from '@tarojs/shared'\nimport {\n Current,\n getPageInstance,\n injectPageInstance\n} from '@tarojs/runtime'\nimport { reactMeta } from './react-meta'\nimport { HOOKS_APP_ID } from './utils'\n\nimport type { Func, PageLifeCycle } from '@tarojs/runtime'\n\nconst taroHooks = (lifecycle: keyof PageLifeCycle) => {\n return (fn: Func) => {\n const { R: React, PageContext } = reactMeta\n const id = React.useContext(PageContext) || HOOKS_APP_ID\n\n // hold fn ref and keep up to date\n const fnRef = React.useRef(fn)\n if (fnRef.current !== fn) fnRef.current = fn\n\n React.useLayoutEffect(() => {\n let inst = getPageInstance(id)\n let first = false\n if (inst == null) {\n first = true\n inst = Object.create(null)\n }\n\n inst = inst!\n\n // callback is immutable but inner function is up to date\n const callback = (...args: any) => fnRef.current(...args)\n\n if (isFunction(inst[lifecycle])) {\n (inst[lifecycle] as any) = [inst[lifecycle], callback]\n } else {\n (inst[lifecycle] as any) = [\n ...((inst[lifecycle] as any) || []),\n callback\n ]\n }\n\n if (first) {\n injectPageInstance(inst!, id)\n }\n return () => {\n const inst = getPageInstance(id)\n const list = inst![lifecycle]\n if (list === callback) {\n (inst![lifecycle] as any) = undefined\n } else if (isArray(list)) {\n (inst![lifecycle] as any) = list.filter(item => item !== callback)\n }\n }\n }, [])\n }\n}\n\nexport const useDidShow = taroHooks('componentDidShow')\n\nexport const useDidHide = taroHooks('componentDidHide')\n\nexport const usePullDownRefresh = taroHooks('onPullDownRefresh')\n\nexport const useReachBottom = taroHooks('onReachBottom')\n\nexport const usePageScroll = taroHooks('onPageScroll')\n\nexport const useResize = taroHooks('onResize')\n\nexport const useShareAppMessage = taroHooks('onShareAppMessage')\n\nexport const useTabItemTap = taroHooks('onTabItemTap')\n\nexport const useTitleClick = taroHooks('onTitleClick')\n\nexport const useOptionMenuClick = taroHooks('onOptionMenuClick')\n\nexport const usePullIntercept = taroHooks('onPullIntercept')\n\nexport const useShareTimeline = taroHooks('onShareTimeline')\n\nexport const useAddToFavorites = taroHooks('onAddToFavorites')\n\nexport const useReady = taroHooks('onReady')\n\nexport const useRouter = (dynamic = false) => {\n const React = reactMeta.R\n return dynamic ? Current.router : React.useMemo(() => Current.router, [])\n}\n\nexport const useScope = () => undefined\n","import { ensure, EMPTY_OBJ } from '@tarojs/shared'\nimport {\n container,\n SERVICE_IDENTIFIER,\n Current,\n document,\n getPageInstance,\n injectPageInstance,\n incrementId\n} from '@tarojs/runtime'\nimport { isClassComponent, ensureIsArray, setDefaultDescriptor, setRouterParams, HOOKS_APP_ID } from './utils'\nimport { reactMeta } from './react-meta'\n\nimport type * as React from 'react'\nimport type { AppConfig } from '@tarojs/taro'\nimport type {\n IHooks,\n AppInstance,\n Instance,\n ReactAppInstance,\n ReactPageComponent,\n PageProps\n} from '@tarojs/runtime'\n\ntype PageComponent = React.CElement<PageProps, React.Component<PageProps, any, any>>\n\nlet h: typeof React.createElement\nlet ReactDOM\n\nconst pageKeyId = incrementId()\nconst hooks = container.get<IHooks>(SERVICE_IDENTIFIER.Hooks)\n\nexport function setReconciler (ReactDOM) {\n hooks.getLifecycle = function (instance, lifecycle: string) {\n lifecycle = lifecycle.replace(/^on(Show|Hide)$/, 'componentDid$1')\n return instance[lifecycle]\n }\n\n hooks.modifyMpEventImpls?.push(function (event) {\n event.type = event.type.replace(/-/g, '')\n })\n\n hooks.batchedEventUpdates = function (cb) {\n ReactDOM.unstable_batchedUpdates(cb)\n }\n\n hooks.mergePageInstance = function (prev, next) {\n if (!prev || !next) return\n\n // 子组件使用 lifecycle hooks 注册了生命周期后,会存在 prev,里面是注册的生命周期回调。\n\n // prev 使用 Object.create(null) 创建,H5 的 fast-refresh 可能也会导致存在 prev,要排除这些意外产生的 prev\n if ('constructor' in prev) return\n\n Object.keys(prev).forEach(item => {\n const prevList = prev[item]\n const nextList = ensureIsArray<() => any>(next[item])\n next[item] = nextList.concat(prevList)\n })\n }\n\n if (process.env.TARO_ENV === 'h5') {\n hooks.createPullDownComponent = (\n el: React.FunctionComponent<PageProps> | React.ComponentClass<PageProps>,\n _,\n R: typeof React,\n customWrapper\n ) => {\n const isReactComponent = isClassComponent(R, el)\n\n return R.forwardRef((props, ref) => {\n const newProps: React.Props<any> = { ...props }\n const refs = isReactComponent ? { ref: ref } : {\n forwardedRef: ref,\n // 兼容 react-redux 7.20.1+\n reactReduxForwardedRef: ref\n }\n\n return h(\n customWrapper || 'taro-pull-to-refresh',\n null,\n h(el, {\n ...newProps,\n ...refs\n })\n )\n })\n }\n\n hooks.getDOMNode = inst => {\n return ReactDOM.findDOMNode(inst)\n }\n }\n}\n\nexport function connectReactPage (\n R: typeof React,\n id: string\n) {\n return (Page: ReactPageComponent): React.ComponentClass<PageProps> => {\n // eslint-disable-next-line dot-notation\n const isReactComponent = isClassComponent(R, Page)\n const inject = (node?: Instance) => node && injectPageInstance(node, id)\n const refs = isReactComponent ? { ref: inject } : {\n forwardedRef: inject,\n // 兼容 react-redux 7.20.1+\n reactReduxForwardedRef: inject\n }\n\n if (reactMeta.PageContext === EMPTY_OBJ) {\n reactMeta.PageContext = R.createContext('')\n }\n\n return class PageWrapper extends R.Component<PageProps, { hasError: boolean }> {\n state = {\n hasError: false\n }\n\n static getDerivedStateFromError (error: Error) {\n process.env.NODE_ENV !== 'production' && console.warn(error)\n return { hasError: true }\n }\n\n // React 16 uncaught error 会导致整个应用 crash,\n // 目前把错误缩小到页面\n componentDidCatch (error: Error, info: React.ErrorInfo) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(error)\n console.error(info.componentStack)\n }\n }\n\n render () {\n const children = this.state.hasError\n ? []\n : h(reactMeta.PageContext.Provider, { value: id }, h(Page, {\n ...this.props,\n ...refs\n }))\n\n if (process.env.TARO_ENV === 'h5') {\n return h(\n 'div',\n { id, className: 'taro_page' },\n children\n )\n } else {\n return h(\n 'root',\n { id },\n children\n )\n }\n }\n }\n }\n}\n\n/**\n * 桥接小程序 App 构造器和 React 渲染流程\n * @param App 用户编写的入口组件\n * @param react 框架\n * @param dom 框架渲染器\n * @param config 入口组件配置 app.config.js 的内容\n * @returns 传递给 App 构造器的对象 obj :App(obj)\n */\nexport function createReactApp (\n App: React.ComponentClass,\n react: typeof React,\n dom,\n config: AppConfig\n) {\n if (process.env.NODE_ENV !== 'production') {\n ensure(!!dom, '构建 React/Nerv 项目请把 process.env.FRAMEWORK 设置为 \\'react\\'/\\'nerv\\' ')\n }\n\n reactMeta.R = react\n h = react.createElement\n ReactDOM = dom\n const appInstanceRef = react.createRef<ReactAppInstance>()\n const isReactComponent = isClassComponent(react, App)\n let appWrapper: AppWrapper\n\n setReconciler(ReactDOM)\n\n function getAppInstance (): ReactAppInstance | null {\n return appInstanceRef.current\n }\n\n class AppWrapper extends react.Component {\n // run createElement() inside the render function to make sure that owner is right\n private pages: Array<() => PageComponent> = []\n private elements: Array<PageComponent> = []\n\n public mount (pageComponent: ReactPageComponent, id: string, cb: () => void) {\n const pageWrapper = connectReactPage(react, id)(pageComponent)\n const key = id + pageKeyId()\n const page = () => h(pageWrapper, { key, tid: id })\n this.pages.push(page)\n this.forceUpdate(cb)\n }\n\n public unmount (id: string, cb: () => void) {\n const elements = this.elements\n const idx = elements.findIndex(item => item.props.tid === id)\n elements.splice(idx, 1)\n this.forceUpdate(cb)\n }\n\n public render () {\n const { pages, elements } = this\n\n while (pages.length > 0) {\n const page = pages.pop()!\n elements.push(page())\n }\n\n let props: React.Props<any> | null = null\n\n if (isReactComponent) {\n props = { ref: appInstanceRef }\n }\n\n return h(\n App,\n props,\n process.env.TARO_ENV === 'h5' ? h('div', null, elements.slice()) : elements.slice()\n )\n }\n }\n\n if (process.env.TARO_ENV !== 'h5') {\n appWrapper = ReactDOM.render?.(h(AppWrapper), document.getElementById('app'))\n }\n\n const [ONLAUNCH, ONSHOW, ONHIDE] = hooks.getMiniLifecycleImpl().app\n\n const appObj: AppInstance = Object.create({\n render (cb: () => void) {\n appWrapper.forceUpdate(cb)\n },\n\n mount (component: ReactPageComponent, id: string, cb: () => void) {\n appWrapper.mount(component, id, cb)\n },\n\n unmount (id: string, cb: () => void) {\n appWrapper.unmount(id, cb)\n }\n }, {\n config: setDefaultDescriptor({\n configurable: true,\n value: config\n }),\n\n [ONLAUNCH]: setDefaultDescriptor({\n value (options) {\n setRouterParams(options)\n\n if (process.env.TARO_ENV === 'h5') {\n // 由于 H5 路由初始化的时候会清除 app 下的 dom 元素,所以需要在路由初始化后执行 render\n appWrapper = ReactDOM.render?.(h(AppWrapper), document.getElementById(config?.appId || 'app'))\n }\n\n // 用户编写的入口组件实例\n const app = getAppInstance()\n this.$app = app\n\n if (app) {\n // 把 App Class 上挂载的额外属性同步到全局 app 对象中\n if (app.taroGlobalData) {\n const globalData = app.taroGlobalData\n const keys = Object.keys(globalData)\n const descriptors = Object.getOwnPropertyDescriptors(globalData)\n keys.forEach(key => {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: true,\n get () {\n return globalData[key]\n },\n set (value) {\n globalData[key] = value\n }\n })\n })\n Object.defineProperties(this, descriptors)\n }\n\n app.onLaunch?.(options)\n }\n }\n }),\n\n [ONSHOW]: setDefaultDescriptor({\n value (options) {\n setRouterParams(options)\n\n /**\n * trigger lifecycle\n */\n const app = getAppInstance()\n // class component, componentDidShow\n app?.componentDidShow?.(options)\n // functional component, useDidShow\n triggerAppHook('onShow', options)\n }\n }),\n\n [ONHIDE]: setDefaultDescriptor({\n value () {\n /**\n * trigger lifecycle\n */\n const app = getAppInstance()\n // class component, componentDidHide\n app?.componentDidHide?.()\n // functional component, useDidHide\n triggerAppHook('onHide')\n }\n }),\n\n onPageNotFound: setDefaultDescriptor({\n value (res: unknown) {\n const app = getAppInstance()\n app?.onPageNotFound?.(res)\n }\n })\n })\n\n function triggerAppHook (lifecycle, ...option) {\n const instance = getPageInstance(HOOKS_APP_ID)\n if (instance) {\n const app = getAppInstance()\n const func = hooks.getLifecycle(instance, lifecycle)\n if (Array.isArray(func)) {\n func.forEach(cb => cb.apply(app, option))\n }\n }\n }\n\n Current.app = appObj\n return appObj\n}\n","import {\n Current,\n document,\n injectPageInstance,\n safeExecute,\n addLeadingSlash,\n incrementId,\n eventHandler\n} from '@tarojs/runtime'\nimport { EMPTY_OBJ } from '@tarojs/shared'\nimport { isClassComponent } from './utils'\nimport { setReconciler } from './connect'\nimport { reactMeta } from './react-meta'\n\nimport type * as React from 'react'\nimport type { PageInstance } from '@tarojs/taro'\nimport type {\n TaroRootElement,\n Instance\n} from '@tarojs/runtime'\n\ndeclare const getCurrentPages: () => PageInstance[]\n\nconst getNativeCompId = incrementId()\nlet h: typeof React.createElement\nlet ReactDOM\n\nfunction initNativeComponentEntry (R: typeof React, ReactDOM) {\n interface IEntryState {\n components: {\n compId: string\n element: React.ReactElement\n }[]\n }\n\n interface IWrapperProps {\n getCtx: () => any\n renderComponent: (ctx: any) => React.ReactElement\n }\n\n class NativeComponentWrapper extends R.Component<IWrapperProps, Record<any, any>> {\n root = R.createRef<TaroRootElement>()\n ctx = this.props.getCtx()\n\n componentDidMount () {\n this.ctx.component = this\n const rootElement = this.root.current!\n rootElement.ctx = this.ctx\n rootElement.performUpdate(true)\n }\n\n render () {\n return (\n h(\n 'root',\n {\n ref: this.root\n },\n this.props.renderComponent(this.ctx)\n )\n )\n }\n }\n\n class Entry extends R.Component<Record<any, any>, IEntryState> {\n state: IEntryState = {\n components: []\n }\n\n componentDidMount () {\n Current.app = this\n }\n\n mount (Component, compId, getCtx) {\n const isReactComponent = isClassComponent(R, Component)\n const inject = (node?: Instance) => node && injectPageInstance(node, compId)\n const refs = isReactComponent ? { ref: inject } : {\n forwardedRef: inject,\n reactReduxForwardedRef: inject\n }\n if (reactMeta.PageContext === EMPTY_OBJ) {\n reactMeta.PageContext = R.createContext('')\n }\n const item = {\n compId,\n element: h(NativeComponentWrapper, {\n key: compId,\n getCtx,\n renderComponent (ctx) {\n return h(\n reactMeta.PageContext.Provider,\n { value: compId },\n h(\n Component,\n {\n ...(ctx.data ||= {}).props,\n ...refs,\n $scope: ctx\n }\n )\n )\n }\n })\n }\n this.setState({\n components: [...this.state.components, item]\n })\n }\n\n unmount (compId) {\n const components = this.state.components\n const index = components.findIndex(item => item.compId === compId)\n const next = [...components.slice(0, index), ...components.slice(index + 1)]\n this.setState({\n components: next\n })\n }\n\n render () {\n const components = this.state.components\n return (\n components.map(({ element }) => element)\n )\n }\n }\n\n setReconciler(ReactDOM)\n\n const app = document.getElementById('app')\n\n ReactDOM.render(\n h(Entry, {}),\n app\n )\n}\n\nexport function createNativeComponentConfig (Component, react: typeof React, reactdom, componentConfig) {\n reactMeta.R = react\n h = react.createElement\n ReactDOM = reactdom\n\n setReconciler(ReactDOM)\n\n const componentObj: Record<string, any> = {\n options: componentConfig,\n properties: {\n props: {\n type: null,\n value: null,\n observer (_newVal, oldVal) {\n oldVal && this.component.forceUpdate()\n }\n }\n },\n created () {\n if (!Current.app) {\n initNativeComponentEntry(react, ReactDOM)\n }\n },\n attached () {\n setCurrent()\n this.compId = getNativeCompId()\n this.config = componentConfig\n Current.app!.mount!(Component, this.compId, () => this)\n },\n ready () {\n safeExecute(this.compId, 'onReady')\n },\n detached () {\n Current.app!.unmount!(this.compId)\n },\n pageLifetimes: {\n show (options) {\n safeExecute(this.compId, 'onShow', options)\n },\n hide () {\n safeExecute(this.compId, 'onHide')\n }\n },\n methods: {\n eh: eventHandler\n }\n }\n\n function setCurrent () {\n const pages = getCurrentPages()\n const currentPage = pages[pages.length - 1]\n if (Current.page === currentPage) return\n\n Current.page = currentPage\n\n const route = (currentPage as any).route || (currentPage as any).__route__\n const router = {\n params: currentPage.options || {},\n path: addLeadingSlash(route),\n onReady: '',\n onHide: '',\n onShow: ''\n }\n Current.router = router\n\n if (!currentPage.options) {\n // 例如在微信小程序中,页面 options 的设置时机比组件 attached 慢\n Object.defineProperty(currentPage, 'options', {\n enumerable: true,\n configurable: true,\n get () {\n return this._optionsValue\n },\n set (value) {\n router.params = value\n this._optionsValue = value\n }\n })\n }\n }\n\n // onShareAppMessage 和 onShareTimeline 一样,会影响小程序右上方按钮的选项,因此不能默认注册。\n if (\n Component.onShareAppMessage ||\n Component.prototype?.onShareAppMessage ||\n Component.enableShareAppMessage\n ) {\n componentObj.methods.onShareAppMessage = function (options) {\n const target = options?.target\n if (target) {\n const id = target.id\n const element = document.getElementById(id)\n if (element) {\n target!.dataset = element.dataset\n }\n }\n return safeExecute(this.compId, 'onShareAppMessage', options)\n }\n }\n if (\n Component.onShareTimeline ||\n Component.prototype?.onShareTimeline ||\n Component.enableShareTimeline\n ) {\n componentObj.methods.onShareTimeline = function () {\n return safeExecute(this.compId, 'onShareTimeline')\n }\n }\n\n return componentObj\n}\n","import {\n container,\n SERVICE_IDENTIFIER\n} from '@tarojs/runtime'\nimport * as taroHooks from './hooks'\n\nimport type { IHooks } from '@tarojs/runtime'\n\ndeclare const __TARO_FRAMEWORK__: string\n\nconst hooks = container.get<IHooks>(SERVICE_IDENTIFIER.Hooks)\n\nhooks.initNativeApiImpls ||= []\nhooks.initNativeApiImpls.push(function (taro) {\n for (const hook in taroHooks) {\n taro[hook] = taroHooks[hook]\n }\n})\n\nif (__TARO_FRAMEWORK__ === 'preact') {\n const options = require('preact').options\n const oldVNodeHook = options.vnode\n const oldDiffedHook = options.diffed\n options.vnode = vnode => {\n const { type, props } = vnode\n let normalizedProps = props\n\n // only normalize props on Element nodes\n if (typeof type === 'string') {\n normalizedProps = {}\n\n for (let i in props) {\n const value = props[i]\n\n if (/^on/.test(i)) {\n i = i.toLowerCase()\n }\n\n normalizedProps[i] = value\n }\n\n vnode.props = normalizedProps\n }\n\n if (oldVNodeHook) oldVNodeHook(vnode)\n }\n options.diffed = function (newVNode) {\n const dom = newVNode._dom\n const newVNodeProps = newVNode.props\n if (dom) { /** ElementNode */\n for (const propName in newVNodeProps) {\n const propValue = newVNodeProps[propName]\n if (propValue === false && dom.props[propName] === undefined) {\n // 值为 false 的属性在 Preact 的 diff 中被 removeAttribute 了,这里手动 setAttribute\n // fix https://github.com/NervJS/taro/issues/11197\n dom.setAttribute(propName, propValue)\n }\n }\n }\n if (oldDiffedHook) oldDiffedHook(newVNode)\n }\n\n hooks.modifyMpEventImpls?.push(e => {\n const type = e.type\n if (type === 'tap') {\n e.type = 'click'\n } else if (type === 'focus') {\n // 兼容 preact/compat/src/render.js options.vnode 的处理逻辑\n e.type = 'focusin'\n } else if (type === 'blur') {\n e.type = 'focusout'\n }\n })\n // hooks.modifyDispatchEventImpls?.push(e => {\n // })\n}\n\nexport * from './hooks'\nexport * from './connect'\nexport * from './connect-native'\n"],"names":["h","ReactDOM","hooks","taroHooks"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tarojs/plugin-framework-react",
3
- "version": "3.4.1",
3
+ "version": "3.4.4",
4
4
  "description": "React/Preact/Nerv 框架插件",
5
5
  "author": "drchan",
6
6
  "homepage": "https://github.com/nervjs/taro",
@@ -27,14 +27,14 @@
27
27
  "dependencies": {
28
28
  "@pmmmwh/react-refresh-webpack-plugin": "0.4.3",
29
29
  "@prefresh/webpack": "^3.2.3",
30
- "@tarojs/runtime": "3.4.1",
31
- "@tarojs/shared": "3.4.1",
30
+ "@tarojs/runtime": "3.4.4",
31
+ "@tarojs/shared": "3.4.4",
32
32
  "acorn": "^8.0.4",
33
33
  "acorn-walk": "^8.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@tarojs/service": "3.4.1",
37
- "@tarojs/taro": "3.4.1"
36
+ "@tarojs/service": "3.4.4",
37
+ "@tarojs/taro": "3.4.4"
38
38
  },
39
- "gitHead": "a2437215b1966fd0b6dd09311bcb4fd894a871d0"
39
+ "gitHead": "099d062d74faa3f124ca2499de1154fae0adc4f9"
40
40
  }