diff --git a/packages/remax-cli/src/__tests__/integration/fixtures/lifeCycle/expected/__remax_runtime_options__.js b/packages/remax-cli/src/__tests__/integration/fixtures/lifeCycle/expected/__remax_runtime_options__.js
index a756e71cf..fe8bc8aa3 100644
--- a/packages/remax-cli/src/__tests__/integration/fixtures/lifeCycle/expected/__remax_runtime_options__.js
+++ b/packages/remax-cli/src/__tests__/integration/fixtures/lifeCycle/expected/__remax_runtime_options__.js
@@ -592,7 +592,10 @@ module.exports = {
"onShareAppMessage",
"onShow"
],
- "pages/classPage": []
+ "pages/classPage": [
+ "onPageScroll",
+ "onShareAppMessage"
+ ]
},
appEvents: []
}
\ No newline at end of file
diff --git a/packages/remax-cli/src/__tests__/integration/fixtures/lifeCycle/expected/pages/classPage.js b/packages/remax-cli/src/__tests__/integration/fixtures/lifeCycle/expected/pages/classPage.js
index 8b3d3cda4..9d327f121 100644
--- a/packages/remax-cli/src/__tests__/integration/fixtures/lifeCycle/expected/pages/classPage.js
+++ b/packages/remax-cli/src/__tests__/integration/fixtures/lifeCycle/expected/pages/classPage.js
@@ -111,6 +111,12 @@ var ClassPage = /*#__PURE__*/function (_React$Component) {
_createClass(ClassPage, [{
key: "onShow",
value: function onShow() {}
+ }, {
+ key: "onShareAppMessage",
+ value: function onShareAppMessage() {}
+ }, {
+ key: "onPageScroll",
+ value: function onPageScroll() {}
}, {
key: "render",
value: function render() {
diff --git a/packages/remax-cli/src/__tests__/integration/fixtures/lifeCycle/src/pages/classPage.js b/packages/remax-cli/src/__tests__/integration/fixtures/lifeCycle/src/pages/classPage.js
index cf0796d26..15b908e7d 100644
--- a/packages/remax-cli/src/__tests__/integration/fixtures/lifeCycle/src/pages/classPage.js
+++ b/packages/remax-cli/src/__tests__/integration/fixtures/lifeCycle/src/pages/classPage.js
@@ -7,6 +7,10 @@ class ClassPage extends React.Component {
onHide = () => {};
+ onShareAppMessage() {}
+
+ onPageScroll() {}
+
render() {
return class page;
}
diff --git a/packages/remax-cli/src/build/webpack/plugins/RuntimeOptions.ts b/packages/remax-cli/src/build/webpack/plugins/RuntimeOptions.ts
index 75fc2ac5a..6079e9a08 100644
--- a/packages/remax-cli/src/build/webpack/plugins/RuntimeOptions.ts
+++ b/packages/remax-cli/src/build/webpack/plugins/RuntimeOptions.ts
@@ -1,6 +1,5 @@
import { Compiler, compilation } from 'webpack';
import * as path from 'path';
-import { appEvents, pageEvents } from '@remax/macro';
import { slash } from '@remax/shared';
import Store from '@remax/build-store';
import getModules from '../../utils/modules';
@@ -70,7 +69,7 @@ export default class RuntimeOptionsPlugin {
new Set(
modules
.reduce((acc, cur) => {
- return [...acc, ...(pageEvents.get(slash(cur)) || []), ...(pageClassEvents.get(slash(cur)) || [])];
+ return [...acc, ...(Store.pageEvents.get(slash(cur)) || []), ...(pageClassEvents.get(slash(cur)) || [])];
}, [])
.sort()
)
@@ -82,9 +81,9 @@ export default class RuntimeOptionsPlugin {
getAppEvents() {
let events: string[] = [];
- for (const key of appEvents.keys()) {
+ for (const key of Store.appEvents.keys()) {
// 这里 get 不可能为空
- events = events.concat(Array.from(appEvents.get(key)!));
+ events = events.concat(Array.from(Store.appEvents.get(key)!));
}
for (const key of appClassEvents.keys()) {
diff --git a/packages/remax-macro/src/macro.ts b/packages/remax-macro/src/macro.ts
index 28b777569..0963ec8dc 100644
--- a/packages/remax-macro/src/macro.ts
+++ b/packages/remax-macro/src/macro.ts
@@ -2,11 +2,12 @@ import * as React from 'react';
import { NodePath } from '@babel/traverse';
import { createMacro } from 'babel-plugin-macros';
import { slash } from '@remax/shared';
+import Store from '@remax/build-store';
import createHostComponentMacro from './createHostComponent';
import requirePluginComponentMacro from './requirePluginComponent';
import requirePluginMacro from './requirePlugin';
-import usePageEventMacro, { pageEvents } from './usePageEvent';
-import useAppEventMacro, { appEvents } from './useAppEvent';
+import usePageEventMacro from './usePageEvent';
+import useAppEventMacro from './useAppEvent';
type PageEventName =
| 'onLoad'
@@ -47,8 +48,8 @@ function remax({ references, state }: { references: { [name: string]: NodePath[]
const importer = slash(state.file.opts.filename);
- appEvents.delete(importer);
- pageEvents.delete(importer);
+ Store.appEvents.delete(importer);
+ Store.pageEvents.delete(importer);
references.useAppEvent?.forEach(path => useAppEventMacro(path, state));
@@ -68,6 +69,4 @@ export declare function usePageEvent(eventName: PageEventName, callback: (...par
export declare function useAppEvent(eventName: AppEventName, callback: (...params: any[]) => any): void;
-export { pageEvents, appEvents };
-
export default createMacro(remax);
diff --git a/packages/remax-macro/src/useAppEvent.ts b/packages/remax-macro/src/useAppEvent.ts
index ee1306f98..525689fad 100644
--- a/packages/remax-macro/src/useAppEvent.ts
+++ b/packages/remax-macro/src/useAppEvent.ts
@@ -1,21 +1,18 @@
import * as t from '@babel/types';
import { slash } from '@remax/shared';
import { NodePath } from '@babel/traverse';
+import Store from '@remax/build-store';
import insertImportDeclaration from './utils/insertImportDeclaration';
const PACKAGE_NAME = '@remax/runtime';
const FUNCTION_NAME = 'useAppEvent';
-type Events = Set;
-
-export const appEvents = new Map();
-
function getArguments(callExpression: NodePath, importer: string) {
const args = callExpression.node.arguments;
const eventName = args[0] as t.StringLiteral;
const callback = args[1];
- appEvents.set(importer, appEvents.get(importer)?.add(eventName.value) ?? new Set([eventName.value]));
+ Store.appEvents.set(importer, Store.appEvents.get(importer)?.add(eventName.value) ?? new Set([eventName.value]));
return [eventName, callback];
}
diff --git a/packages/remax-macro/src/usePageEvent.ts b/packages/remax-macro/src/usePageEvent.ts
index 898eca1c6..5ac33649f 100644
--- a/packages/remax-macro/src/usePageEvent.ts
+++ b/packages/remax-macro/src/usePageEvent.ts
@@ -1,21 +1,18 @@
import * as t from '@babel/types';
import { NodePath } from '@babel/traverse';
import { slash } from '@remax/shared';
+import Store from '@remax/build-store';
import insertImportDeclaration from './utils/insertImportDeclaration';
const PACKAGE_NAME = '@remax/runtime';
const FUNCTION_NAME = 'usePageEvent';
-type Events = Set;
-
-export const pageEvents = new Map();
-
function getArguments(callExpression: NodePath, importer: string) {
const args = callExpression.node.arguments;
const eventName = args[0] as t.StringLiteral;
const callback = args[1];
- pageEvents.set(importer, pageEvents.get(importer)?.add(eventName.value) ?? new Set([eventName.value]));
+ Store.pageEvents.set(importer, Store.pageEvents.get(importer)?.add(eventName.value) ?? new Set([eventName.value]));
return [eventName, callback];
}