@mpxjs/core 2.9.47 → 2.9.50
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mpxjs/core",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.50",
|
|
4
4
|
"description": "mpx runtime core",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"miniprogram",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
],
|
|
20
20
|
"main": "src/index.js",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@mpxjs/utils": "^2.9.
|
|
22
|
+
"@mpxjs/utils": "^2.9.50",
|
|
23
23
|
"lodash": "^4.1.1",
|
|
24
24
|
"miniprogram-api-typings": "^3.10.0"
|
|
25
25
|
},
|
|
@@ -81,5 +81,5 @@
|
|
|
81
81
|
"url": "https://github.com/didi/mpx/issues"
|
|
82
82
|
},
|
|
83
83
|
"sideEffects": false,
|
|
84
|
-
"gitHead": "
|
|
84
|
+
"gitHead": "d8b89e0ba1f29a16244b247f6c7a8d8197e0d732"
|
|
85
85
|
}
|
package/src/core/proxy.js
CHANGED
|
@@ -27,8 +27,7 @@ import {
|
|
|
27
27
|
callWithErrorHandling,
|
|
28
28
|
warn,
|
|
29
29
|
error,
|
|
30
|
-
getEnvObj
|
|
31
|
-
isReact
|
|
30
|
+
getEnvObj
|
|
32
31
|
} from '@mpxjs/utils'
|
|
33
32
|
import {
|
|
34
33
|
BEFORECREATE,
|
|
@@ -136,8 +135,10 @@ export default class MpxProxy {
|
|
|
136
135
|
}
|
|
137
136
|
|
|
138
137
|
created () {
|
|
139
|
-
|
|
140
|
-
|
|
138
|
+
if (__mpx_dynamic_runtime__) {
|
|
139
|
+
// 缓存上下文,在 destoryed 阶段删除
|
|
140
|
+
contextMap.set(this.uid, this.target)
|
|
141
|
+
}
|
|
141
142
|
if (__mpx_mode__ !== 'web') {
|
|
142
143
|
// web中BEFORECREATE钩子通过vue的beforeCreate钩子单独驱动
|
|
143
144
|
this.callHook(BEFORECREATE)
|
|
@@ -153,7 +154,7 @@ export default class MpxProxy {
|
|
|
153
154
|
this.state = CREATED
|
|
154
155
|
this.callHook(CREATED)
|
|
155
156
|
|
|
156
|
-
if (__mpx_mode__ !== 'web' &&
|
|
157
|
+
if (__mpx_mode__ !== 'web' && __mpx_mode__ !== 'ios' && __mpx_mode__ !== 'android') {
|
|
157
158
|
this.initRender()
|
|
158
159
|
}
|
|
159
160
|
|
|
@@ -197,8 +198,10 @@ export default class MpxProxy {
|
|
|
197
198
|
}
|
|
198
199
|
|
|
199
200
|
unmounted () {
|
|
200
|
-
|
|
201
|
-
|
|
201
|
+
if (__mpx_dynamic_runtime__) {
|
|
202
|
+
// 页面/组件销毁清除上下文的缓存
|
|
203
|
+
contextMap.remove(this.uid)
|
|
204
|
+
}
|
|
202
205
|
this.callHook(BEFOREUNMOUNT)
|
|
203
206
|
this.scope?.stop()
|
|
204
207
|
if (this.update) this.update.active = false
|
|
@@ -239,7 +242,7 @@ export default class MpxProxy {
|
|
|
239
242
|
}
|
|
240
243
|
|
|
241
244
|
initProps () {
|
|
242
|
-
if (
|
|
245
|
+
if (__mpx_mode__ === 'ios' || __mpx_mode__ === 'android') {
|
|
243
246
|
// react模式下props内部对象透传无需深clone,依赖对象深层的数据响应触发子组件更新
|
|
244
247
|
this.props = this.target.__getProps()
|
|
245
248
|
} else {
|
|
@@ -650,7 +653,7 @@ export default class MpxProxy {
|
|
|
650
653
|
this.forceUpdateAll = true
|
|
651
654
|
}
|
|
652
655
|
|
|
653
|
-
if (
|
|
656
|
+
if (__mpx_mode__ === 'ios' || __mpx_mode__ === 'android') {
|
|
654
657
|
// rn中不需要setdata
|
|
655
658
|
this.forceUpdateData = {}
|
|
656
659
|
this.forceUpdateAll = false
|
|
@@ -74,6 +74,13 @@ export default function install (Vue) {
|
|
|
74
74
|
}
|
|
75
75
|
})
|
|
76
76
|
|
|
77
|
+
Vue.prototype.__ensureString = function (val) {
|
|
78
|
+
if (typeof val === 'string') {
|
|
79
|
+
return val
|
|
80
|
+
}
|
|
81
|
+
return JSON.stringify(val) + 'MpxEscape'
|
|
82
|
+
}
|
|
83
|
+
|
|
77
84
|
Vue.prototype.triggerEvent = function (eventName, eventDetail) {
|
|
78
85
|
// 输出Web时自定义组件绑定click事件会和web原生事件冲突,组件内部triggerEvent时会导致事件执行两次,将click事件改为_click来规避此问题
|
|
79
86
|
const escapeEvents = ['click']
|
|
@@ -13,16 +13,16 @@ import pageRouteMixin from './pageRouteMixin'
|
|
|
13
13
|
import { dynamicRefsMixin, dynamicRenderHelperMixin, dynamicSlotMixin } from '../../dynamic/dynamicRenderMixin.empty'
|
|
14
14
|
import styleHelperMixin from './styleHelperMixin'
|
|
15
15
|
import directiveHelperMixin from './directiveHelperMixin'
|
|
16
|
-
import { isReact } from '@mpxjs/utils'
|
|
17
16
|
|
|
18
17
|
export default function getBuiltInMixins (options, type) {
|
|
19
18
|
let bulitInMixins
|
|
20
|
-
if (
|
|
19
|
+
if (__mpx_mode__ === 'ios' || __mpx_mode__ === 'android') {
|
|
21
20
|
bulitInMixins = [
|
|
22
21
|
proxyEventMixin(),
|
|
23
22
|
directiveHelperMixin(),
|
|
24
23
|
styleHelperMixin(type),
|
|
25
|
-
refsMixin()
|
|
24
|
+
refsMixin(),
|
|
25
|
+
i18nMixin()
|
|
26
26
|
]
|
|
27
27
|
} else if (__mpx_mode__ === 'web') {
|
|
28
28
|
bulitInMixins = [
|
|
@@ -5,14 +5,14 @@ import { getDefaultOptions as getAliDefaultOptions } from './ali/getDefaultOptio
|
|
|
5
5
|
import { getDefaultOptions as getSwanDefaultOptions } from './swan/getDefaultOptions'
|
|
6
6
|
import { getDefaultOptions as getWebDefaultOptions } from './web/getDefaultOptions'
|
|
7
7
|
import { getDefaultOptions as getReactDefaultOptions } from './react/getDefaultOptions'
|
|
8
|
-
import { error
|
|
8
|
+
import { error } from '@mpxjs/utils'
|
|
9
9
|
|
|
10
10
|
export default function createFactory (type) {
|
|
11
11
|
return (options = {}, { isNative, customCtor, customCtorType } = {}) => {
|
|
12
12
|
options.__nativeRender__ = !!isNative
|
|
13
13
|
options.__type__ = type
|
|
14
14
|
let ctor
|
|
15
|
-
if (__mpx_mode__ !== 'web' &&
|
|
15
|
+
if (__mpx_mode__ !== 'web' && __mpx_mode__ !== 'ios' && __mpx_mode__ !== 'android') {
|
|
16
16
|
if (customCtor) {
|
|
17
17
|
ctor = customCtor
|
|
18
18
|
customCtorType = customCtorType || type
|
|
@@ -40,7 +40,7 @@ export default function createFactory (type) {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
let getDefaultOptions
|
|
43
|
-
if (
|
|
43
|
+
if (__mpx_mode__ === 'ios' || __mpx_mode__ === 'android') {
|
|
44
44
|
getDefaultOptions = getReactDefaultOptions
|
|
45
45
|
} else if (__mpx_mode__ === 'web') {
|
|
46
46
|
getDefaultOptions = getWebDefaultOptions
|
|
@@ -60,7 +60,7 @@ export default function createFactory (type) {
|
|
|
60
60
|
// 将合并后的用户定义的rawOptions传入获取当前应该注入的内建mixins
|
|
61
61
|
rawOptions.mixins = getBuiltInMixins(rawOptions, type)
|
|
62
62
|
const defaultOptions = getDefaultOptions({ type, rawOptions, currentInject })
|
|
63
|
-
if (__mpx_mode__ === 'web' ||
|
|
63
|
+
if (__mpx_mode__ === 'web' || __mpx_mode__ === 'ios' || __mpx_mode__ === 'android') {
|
|
64
64
|
global.__mpxOptionsMap = global.__mpxOptionsMap || {}
|
|
65
65
|
global.__mpxOptionsMap[currentInject.moduleId] = defaultOptions
|
|
66
66
|
} else if (ctor) {
|