183183> 1 . 只有父级 view 节点的文本样式可以被子 text 节点继承;
184184> 2 . view 节点直接包裹文本实际上等同于 view>text>文本,Mpx 框架在编译时若检测到 view 节点直接包裹文本会自动添加一层 text 节点;
185185> 3 . 多级 text 节点可实现文本样式的继承,比如 text>text>文本 ;
186- > 4 . 若不想使用 Mpx 内部实现的 view>text>文本 这种文本样式继承,可设置` disable-default-style=true ` 来关闭该继承逻辑;
187186### 简写样式属性
188187在 Mpx 内对于通过 class 类来定义的样式会按照 RN 的样式规则在编译处理一遍,其中最重要的一部分就是将 RN 不支持简写属性按约定的规则转换成 RN 能支持多属性结构。
189188
@@ -682,7 +681,7 @@ Mpx 输出 React Native 支持以下模版指令。
682681注意事项
683682
6846831 . 目前不支持自定义下拉刷新节点,使用 slot="refresher" 声明无效,在 React Native 环境中还是会被当作普通节点渲染出来
685- 2 . 若使用 scroll-into-view 属性,需要 id 对应的组件节点添加 wx: ref 标记,否则无法正常滚动
684+ 2 . 若使用 scroll-into-view 属性,需要 id 对应的组件节点添加 wx: ref 标记,否则无法正常滚动。另外组件节点需要是内置基础组件,自定义组件暂不支持。
6866853 . simultaneous-handlers 为 RN 环境特有属性,具体含义可参考[ react-native-gesture-handler] ( https://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/gesture-composition/#simultaneouswithexternalgesture )
6876864 . wait-for 为 RN 环境特有属性,具体含义可参考[ react-native-gesture-handler] ( https://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/gesture-composition/#requireexternalgesturetofail )
688687
@@ -707,7 +706,9 @@ Mpx 输出 React Native 支持以下模版指令。
707706| next-margin | String | ` 0 ` | 后边距,可用于露出后一项的一小部分,接受px |
708707| scale | Boolean | ` false ` | 滑动时是否开启前后元素缩小,默认是缩放0.7倍, 暂不支持自定义 |
709708| easing-function | String | ` linear ` | 支持 linear、easeInCubic、easeOutCubic、easeInOutCubic|
710- | bindchange | eventhandle| 无 | current 改变时会触发 change 事件,` event.detail = {current, source} ` |
709+ | simultaneous-handlers | ` Array<object> ` | [ ] | RN环境特有属性,主要用于组件嵌套场景,允许多个手势同时识别和处理并触发,这个属性可以指定一个或多个手势处理器,处理器支持使用 this.$refs.xxx 获取组件实例来作为数组参数传递给 swiper 组件|
710+ | wait-for | ` Array<object> ` | [ ] | RN环境特有属性,主要用于组件嵌套场景,允许延迟激活处理某些手势,这个属性可以指定一个或多个手势处理器,处理器支持使用 this.$refs.xxx 获取组件实例来作为数组参数传递给 swiper 组件|
711+ | disableGesture | Boolean| false | 禁用 swiper 滑动手势。若开启用户无法通过手势滑动 swiper,只能通过开启 autoPlay 进行自动轮播|
711712
712713
713714
@@ -979,6 +980,34 @@ movable-view的可移动区域。
979980| bindlinechange | 输入框行数变化时调用,` event.detail = { height: 0, lineCount: 0 } ` ,不支持 ` heightRpx ` |
980981| bind: selectionchange | 选区改变事件, ` event.detail = {selectionStart, selectionEnd} ` |
981982
983+ #### progress
984+ 进度条。
985+
986+ 属性
987+
988+ | 属性名 | 类型 | 默认值 | 说明 |
989+ | ----------------------- | ------- | ------------- | ---------------------------------------------------------- |
990+ | percent | Number | ` 0 ` | 百分比进度,范围0-100 |
991+ | stroke-width | Number\| String | ` 6 ` | 进度条线的宽度,单位px |
992+ | color | String | | 进度条颜色(已废弃,请使用 activeColor) |
993+ | activeColor | String | ` #09BB07 ` | 已选择的进度条的颜色 |
994+ | backgroundColor | String | ` #EBEBEB ` | 未选择的进度条的颜色 |
995+ | active | Boolean | ` false ` | 进度条从左往右的动画 |
996+ | active-mode | String | ` backwards ` | 动画播放模式,` backwards ` : 从头开始播放;` forwards ` : 从上次结束点接着播放 |
997+ | duration | Number | ` 30 ` | 进度增加1%所需毫秒数 |
998+
999+ 事件
1000+
1001+ | 事件名 | 说明 |
1002+ | ----------------| --------------------------------------------------- |
1003+ | bindactiveend | 动画完成时触发,` event.detail = { percent } ` |
1004+
1005+ 注意事项
1006+
1007+ 1 . 不支持 ` show-info ` 属性,即不支持在进度条右侧显示百分比
1008+ 2 . 不支持 ` border-radius ` 属性自定义圆角大小
1009+ 3 . 不支持 ` font-size ` 属性设置右侧百分比字体大小
1010+
9821011#### picker-view
9831012
9841013嵌入页面的滚动选择器。其中只可放置 [ * picker-view-column* ] ( #picker-view-column ) 组件,其它节点不会显示
@@ -1001,11 +1030,11 @@ movable-view的可移动区域。
10011030
10021031- 触感反馈回调方法
10031032
1004- 通过在全局注册 ` mpx.config.rnConfig.pickerVibrate ` 方法,在每次滚动选择时会调用该方法。
1033+ 通过在全局注册 ` mpx.config.rnConfig.onPickerVibrate ` 方法,在每次滚动选择时会调用该方法。
10051034
10061035| 注册触感方法名 | 类型 | 说明 |
10071036| ----------------------| --------------| ------------------- |
1008- | pickerVibrate | Function | 注册自定义触感反馈方法。调用时机:在每次滚动选择时会调用该方法。可以在方法内自定义实现类似 iOS 端原生表盘的振动触感。 |
1037+ | onPickerVibrate | Function | 注册自定义触感反馈方法。调用时机:在每次滚动选择时会调用该方法。可以在方法内自定义实现类似 iOS 端原生表盘的振动触感。 |
10091038
10101039#### picker-view-column
10111040
@@ -2590,6 +2619,21 @@ mpx.config.rnConfig.downloadChunkAsync = function (packages) {
25902619}
25912620` ` `
25922621
2622+ 针对异步分包加载异常的场景:
2623+
2624+ * 异步组件加载失败:微信小程序提供了 [` wx.onLazyLoadError` ](https: // developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onLazyLoadError.html) 的全局 api 来监听异步组件加载失败,这个 api 同样在Mpx转RN场景下生效;
2625+ * 异步页面加载失败:微信小程序未提供相关的监听异常的 api,Mpx转RN 提供了一个额外的全局监听函数:
2626+
2627+ ` ` ` javascript
2628+ // RN 场景下监听异步页面加载失败的全局配置
2629+ mpx.config.rnConfig.onLazyLoadPageError = function (error) {
2630+ console.log(
2631+ error.subpackage, // 加载失败的分包名
2632+ error.errType // 加载失败的类型:'timeout' | 'fail'
2633+ )
2634+ }
2635+ ` ` `
2636+
25932637此外针对Mpx转RN 的场景,还提供了一些异步分包的配置选项:
25942638
25952639` ` ` javascript
@@ -2639,3 +2683,77 @@ module.exports = defineConfig({
26392683 })
26402684</script>
26412685` ` `
2686+
2687+
2688+ #### 分享
2689+
2690+ ##### mpx .config .rnConfig .openTypeHandler .onShareAppMessage
2691+
2692+ 当使用 [button 组件](./ rn .html #button) 并指定 ` open-type="share"` 时,将触发分享。在 RN 中是分享实现需由容器实现,可在 onShareAppMessage 中完成分享逻辑实现。
2693+
2694+ 其参数为当前页面的 onShareAppMessage 钩子返回内容,如果返回返回内容中包含 promise,将会在 fulfilled 后将其结果合并再触发 onShareAppMessage
2695+
2696+ ` (shareInfo: { title: string, path: string, imageUrl?: string }) => void`
2697+
2698+
2699+
2700+ #### 路由
2701+
2702+
2703+ ** mpx .config .rnConfig .parseAppProps **
2704+
2705+ ` (props: Record<string, any>) => ({ initialRouteName: string, initialParams: Record<string, any> }| void)`
2706+
2707+ 用于获取初始路由配置的函数,参数为RN 根组件接收到的参数
2708+
2709+ + initialRouteName: 首页路径,例如 pages/ index
2710+
2711+ + initialParams: 首页onLoad参数,例如 \{ a: 1 \}
2712+
2713+
2714+
2715+
2716+
2717+
2718+ ** mpx .config .rnConfig .onStateChange **
2719+
2720+ ` (state: Record<string, any>) => void`
2721+
2722+ 当导航状态发生变化时触发,例如页面跳转、返回等。可在此回调中将 ReactNative 路径栈同步到容器中。
2723+
2724+
2725+
2726+ ##### mpx .config .rnConfig .onAppBack
2727+
2728+ ` () => boolean`
2729+
2730+ 页面栈长度为 1 (即根页面)且用户尝试退出 App 时触发。
2731+
2732+ + true :允许退出应用
2733+
2734+ + false :阻止退出应用
2735+
2736+
2737+ ##### mpx .config .rnConfig .onStackTopBack
2738+
2739+ 控制首页回退按钮是否展示,并监听点击事件。
2740+
2741+ 如果绑定该函数,则首页显示返回按钮,点击后调用该函数作为回调,如果未绑定该函数,则首页不会展示返回按钮。
2742+
2743+ 如需实现点击返回,请在函数内部手动调用 back。
2744+
2745+
2746+
2747+ #### 折叠屏适配
2748+
2749+
2750+ ##### mpx .config .rnConfig .customDimensions
2751+
2752+ ` (dimensions: { window: ScaledSize; screen: ScaledSize }) => { window: ScaledSize; screen: ScaledSize } | void`
2753+
2754+ 在某些情况下,我们可能不希望当前 ReactNative 全屏展示,Mpx 内部基于 ScreenWidth 与 ScreenHeight 作为 rpx、vh、vw、媒体查询、onResize等特性的依赖内容,此时可在 ` mpx.config.rnConfig.customDimensions` 中自定义 screen 信息来得到想要的渲染效果。
2755+
2756+ 可在此方法中返回修改后的 dimensions,如果无返回或返回undefined ,则以入参作为返回值
2757+
2758+
2759+ 例如在折叠屏中我们期望只在其中一半屏上展示,可在customDimensions中判断当前是否为折叠屏展开状态,如果是则将 ScreenWidth 设置为原来的一半。
0 commit comments