Skip to content

Commit 7932a25

Browse files
authored
Merge branch 'master' into fix-movable-runonjs
2 parents c98077d + 3a6b887 commit 7932a25

File tree

11 files changed

+49
-13
lines changed

11 files changed

+49
-13
lines changed

docs-vitepress/api/app-config.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ mpx.config.webRouteConfig = {
158158
```
159159

160160
## webConfig
161-
web 环境下的一些配置,如路由模式,页面切换动画效果等
161+
web 环境下的一些配置,如路由模式
162162

163163
- **用法**:
164164
```js
@@ -169,3 +169,4 @@ mpx.config.webConfig.routeConfig = {
169169
// 禁用页面切换动画
170170
mpx.config.webConfig.disablePageTransition = true
171171
```
172+
此处的 `disablePageTransition` 后续将被废弃,请使用编译阶段的[disablePageTransition](./compile.md#webconfig)进行配置

docs-vitepress/api/compile.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -828,6 +828,10 @@ transRpxFn 配置用于自定义输出 web 时对于 rpx 样式单位的转换
828828

829829
useSSR 默认值为 `false`,当 SSR 模式下使用异步分包时,需要将 useSSR 设置为 `true`, 其他场景不需要。
830830

831+
`{disablePageTransition: boolean}`
832+
833+
用于配置禁用/开启页面切换动画,默认禁用
834+
831835

832836
```js
833837
// mpx.config.js
@@ -841,7 +845,9 @@ module.exports = defineConfig({
841845
return `${$1 * +(100 / 750).toFixed(8)}vw`
842846
},
843847
// 当 SSR 模式下使用异步分包时
844-
useSSR: true
848+
useSSR: true,
849+
// 开启页面切换动画
850+
disablePageTransition: false
845851
}
846852
}
847853
}

docs-vitepress/guide/advance/platform.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,7 @@ onShow|是
630630
onHide|是
631631
onUnload|是
632632
onError|是
633-
onServerPrefetch
633+
onServerPrefetch|
634634
created|是
635635
attached|是
636636
ready|是

docs-vitepress/guide/platform/rn.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,6 @@ RN:
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

684683
1. 目前不支持自定义下拉刷新节点,使用 slot="refresher" 声明无效,在 React Native 环境中还是会被当作普通节点渲染出来
685-
2. 若使用 scroll-into-view 属性,需要 id 对应的组件节点添加 wx:ref 标记,否则无法正常滚动
684+
2. 若使用 scroll-into-view 属性,需要 id 对应的组件节点添加 wx:ref 标记,否则无法正常滚动。另外组件节点需要是内置基础组件,自定义组件暂不支持。
686685
3. simultaneous-handlers 为 RN 环境特有属性,具体含义可参考[react-native-gesture-handler](https://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/gesture-composition/#simultaneouswithexternalgesture)
687686
4. 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

packages/core/@types/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ interface Context {
121121
createSelectorQuery: WechatMiniprogram.Component.InstanceMethods<Record<string, any>>['createSelectorQuery']
122122
createIntersectionObserver: WechatMiniprogram.Component.InstanceMethods<Record<string, any>>['createIntersectionObserver'],
123123
getPageId: WechatMiniprogram.Component.InstanceMethods<Record<string, any>>['getPageId']
124+
getOpenerEventChannel: WechatMiniprogram.Component.InstanceMethods<Record<string, any>>['getOpenerEventChannel']
124125
}
125126
type ExtendedComponentOptions = {
126127
disconnectOnUnmounted?: boolean

packages/core/src/core/proxy.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,8 @@ export default class MpxProxy {
334334
selectAllComponents: this.target.selectAllComponents.bind(this.target),
335335
createSelectorQuery: this.target.createSelectorQuery ? this.target.createSelectorQuery.bind(this.target) : envObj.createSelectorQuery.bind(envObj),
336336
createIntersectionObserver: this.target.createIntersectionObserver ? this.target.createIntersectionObserver.bind(this.target) : envObj.createIntersectionObserver.bind(envObj),
337-
getPageId: this.target.getPageId.bind(this.target)
337+
getPageId: this.target.getPageId.bind(this.target),
338+
getOpenerEventChannel: this.target.getOpenerEventChannel.bind(this.target)
338339
}
339340
])
340341
if (!isObject(setupResult)) {

packages/webpack-plugin/lib/runtime/components/web/filterTag.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,16 @@ function parseHTML (html, options) {
8888
match.end = index
8989
handleStartTag(match)
9090
}
91+
continue
92+
}
93+
94+
// If we reach here, the `<` at position 0 does not start a valid tag/comment/end tag
95+
// Treat it as plain text to avoid infinite loop on stray '<'
96+
if (options.chars) {
97+
options.chars('<')
9198
}
99+
advance(1)
100+
continue
92101
}
93102
let text, rest, next
94103
if (textEnd >= 0) {

packages/webpack-plugin/lib/runtime/optionProcessor.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ export function processComponentOption (
1414
componentGenerics,
1515
genericsInfo,
1616
wxsMixin,
17-
hasApp
17+
hasApp,
18+
disablePageTransition
1819
}
1920
) {
2021
// 局部注册页面和组件中依赖的组件
@@ -79,7 +80,7 @@ registered in parent context!`)
7980
transitionName: ''
8081
}
8182
}
82-
if (!global.__mpx.config.webConfig.disablePageTransition) {
83+
if (!disablePageTransition) {
8384
option.watch = {
8485
$route: {
8586
handler () {

packages/webpack-plugin/lib/template-compiler/compiler.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1936,7 +1936,18 @@ function processAttrs (el, options) {
19361936
el.attrsList.forEach((attr) => {
19371937
const isTemplateData = el.tag === 'template' && attr.name === 'data'
19381938
const needWrap = isTemplateData && mode !== 'swan'
1939-
const value = needWrap ? `{${attr.value}}` : attr.value
1939+
let value = needWrap ? `{${attr.value}}` : attr.value
1940+
1941+
// 修复React Native环境下属性值中插值表达式带空格的问题
1942+
if (isReact(mode) && typeof value === 'string') {
1943+
// 检查是否为带空格的插值表达式
1944+
const trimmedValue = value.trim()
1945+
if (trimmedValue.startsWith('{{') && trimmedValue.endsWith('}}')) {
1946+
// 如果是纯插值表达式但带有前后空格,则使用去除空格后的值进行解析
1947+
value = trimmedValue
1948+
}
1949+
}
1950+
19401951
const parsed = parseMustacheWithContext(value)
19411952
if (parsed.hasBinding) {
19421953
// 该属性判断用于提供给运行时对于计算属性作为props传递时提出警告

packages/webpack-plugin/lib/web/processScript.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ module.exports = function (script, {
2727
}, callback) {
2828
const { projectRoot, appInfo, webConfig, i18n } = loaderContext.getMpx()
2929

30+
const { disablePageTransition = true } = webConfig
31+
3032
let output = '/* script */\n'
3133

3234
let scriptSrcMode = srcMode
@@ -86,7 +88,8 @@ module.exports = function (script, {
8688
componentGenerics: ${JSON.stringify(componentGenerics)},
8789
genericsInfo: ${JSON.stringify(genericsInfo)},
8890
wxsMixin: getWxsMixin(wxsModules),
89-
hasApp: ${hasApp}
91+
hasApp: ${hasApp},
92+
disablePageTransition: ${JSON.stringify(disablePageTransition)},
9093
})\n`
9194
return content
9295
}

0 commit comments

Comments
 (0)