Skip to content

Commit

Permalink
Merge branch 'master' into feat-docs-vitepress-style
Browse files Browse the repository at this point in the history
  • Loading branch information
wangshunnn authored Jan 17, 2025
2 parents 37966c2 + 62b48fe commit 3124f1f
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 10 deletions.
52 changes: 52 additions & 0 deletions docs-vitepress/api/optional-api.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,57 @@
# 选项式 API

### options.shallowReactivePattern
- **类型:** `RegExp`
- **详细:**

取消data/properties内数据的深度响应。

适用于每次更新均为整体的更新而非局部少量数据更新的大型数据,可减少掉对应属性“数据响应初始化”以及“diff比较”两个阶段的耗时

```html
<!-- child -->
<script>
createComponent({
properties: {
bigPropData: Object
},
data: {
// 这个是视图上需要用到的大数据
bigData: { a: 0 }
},
options: {
// 配置具体哪些data或者properties需要忽略响应
shallowReactivePattern: /bigData|bigPropData/
},
methods: {
foo() {
this.bigData = { a: 1 } // 可触发视图更新
},
bar() {
this.bigData.a = 2 // 不可触发视图更新
}
}
})
</script>

<!-- perant -->
<template>
<child bigPropData="{{parentBigData}}"/>
</template>
<script>
createComponent({
data: {
parentBigData: []
},
options: {
shallowReactivePattern: /parentBigData/ // 父组件中传入的data也需要开启shallowReactive
}
})
</script>
```

> 注意
### onAppInit
- **类型:** `Function`
- **详细:**
Expand Down
28 changes: 19 additions & 9 deletions packages/core/src/platform/env/index.ios.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { isFunction, isNumber, isString } from '@mpxjs/utils'
import { createI18n } from '../builtInMixins/i18nMixin'

export function init (Mpx) {
Expand Down Expand Up @@ -30,21 +31,30 @@ function initGlobalErrorHandling () {
})
}

function onUnhandledRejection (event) {
if (global.__mpxAppCbs && global.__mpxAppCbs.rejection && global.__mpxAppCbs.rejection.length) {
global.__mpxAppCbs.rejection.forEach((cb) => {
cb(event)
})
} else {
console.warn(`UNHANDLED PROMISE REJECTION ${(isNumber(event.id) || isString(event.id)) ? '(id:' + event.id + ')' : ''}: ${event.reason}\n`)
}
}
const rejectionTrackingOptions = {
allRejections: true,
onUnhandled (id, error) {
if (global.__mpxAppCbs && global.__mpxAppCbs.rejection && global.__mpxAppCbs.rejection.length) {
global.__mpxAppCbs.rejection.forEach((cb) => {
cb(error, id)
})
} else {
console.warn(`UNHANDLED PROMISE REJECTION (id: ${id}): ${error}\n`)
}
onUnhandledRejection({ id, reason: error, promise: null })
}
}

if (global?.HermesInternal?.hasPromise?.()) {
global.HermesInternal?.enablePromiseRejectionTracker?.(rejectionTrackingOptions)
// 支持 core-js promise polyfill
const oldOnUnhandledRejection = global.onunhandledrejection
global.onunhandledrejection = function onunhandledrejection (event) {
onUnhandledRejection(event)
isFunction(oldOnUnhandledRejection) && oldOnUnhandledRejection.call(this, event)
}
if (global.HermesInternal?.hasPromise?.()) {
global.HermesInternal.enablePromiseRejectionTracker?.(rejectionTrackingOptions)
} else {
require('promise/setimmediate/rejection-tracking').enable(rejectionTrackingOptions)
}
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/platform/env/index.web.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ function initGlobalErrorHandling () {
window.addEventListener('unhandledrejection', (event) => {
if (global.__mpxAppCbs && global.__mpxAppCbs.rejection && global.__mpxAppCbs.rejection.length) {
global.__mpxAppCbs.rejection.forEach((cb) => {
cb(event.reason, event.promise)
cb(event)
})
} else {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}\n`)
Expand Down

0 comments on commit 3124f1f

Please sign in to comment.