From a7fd0a4f79536c38d9f909c7de527e4f7bc3978b Mon Sep 17 00:00:00 2001 From: Everestbs Date: Fri, 13 Feb 2026 09:23:27 -0500 Subject: [PATCH 1/2] fix: black screen when using routeType with navigateTo in Skyline mode --- packages/taro-platform-weapp/src/apis.ts | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/packages/taro-platform-weapp/src/apis.ts b/packages/taro-platform-weapp/src/apis.ts index e3d25ec04201..3ae4a37f23c8 100644 --- a/packages/taro-platform-weapp/src/apis.ts +++ b/packages/taro-platform-weapp/src/apis.ts @@ -22,6 +22,42 @@ export function initNativeApi (taro) { } } }) + + // 保存原始的 navigateTo 方法 + const originalNavigateTo = taro.navigateTo + + // 重写 navigateTo 以支持 Skyline 渲染模式 + taro.navigateTo = function (options: Record) { + // 检查是否在 Skyline 模式下使用了特殊的 routeType + if (options?.routeType && typeof wx !== 'undefined') { + // 获取当前渲染器类型 + const renderer = taro.getRenderer?.() || 'webview' + + // Skyline 模式下,routeType 参数需要通过原生 API 直接调用 + // 避免 Taro 运行时的动画处理导致节点查找失败 + if (renderer === 'skyline') { + return new Promise((resolve, reject) => { + const { success, fail, complete, ...restOptions } = options + wx.navigateTo({ + ...restOptions, + success: (res) => { + success?.(res) + resolve(res) + }, + fail: (err) => { + fail?.(err) + reject(err) + }, + complete + }) + }) + } + } + + // 非 Skyline 模式或无 routeType 参数时使用标准流程 + return originalNavigateTo.call(taro, options) + } + taro.cloud = wx.cloud taro.getTabBar = function (pageCtx) { if (typeof pageCtx?.getTabBar === 'function') { From 019102019ebd4c3d5d8fbe85d8c34076c56cf681 Mon Sep 17 00:00:00 2001 From: Everestbs Date: Fri, 13 Feb 2026 10:17:40 -0500 Subject: [PATCH 2/2] fix: improve error handling and add JSDoc for navigateTo in Skyline mode --- packages/taro-platform-weapp/src/apis.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/taro-platform-weapp/src/apis.ts b/packages/taro-platform-weapp/src/apis.ts index 3ae4a37f23c8..ef0edf805040 100644 --- a/packages/taro-platform-weapp/src/apis.ts +++ b/packages/taro-platform-weapp/src/apis.ts @@ -26,7 +26,12 @@ export function initNativeApi (taro) { // 保存原始的 navigateTo 方法 const originalNavigateTo = taro.navigateTo - // 重写 navigateTo 以支持 Skyline 渲染模式 + /** + * 重写 navigateTo 以支持 Skyline 渲染模式 + * 在 Skyline 模式下使用 routeType 参数时,直接调用微信原生 API,避免 Taro 运行时的动画处理导致节点查找失败 + * @param options - 导航参数对象 + * @returns Promise + */ taro.navigateTo = function (options: Record) { // 检查是否在 Skyline 模式下使用了特殊的 routeType if (options?.routeType && typeof wx !== 'undefined') { @@ -42,13 +47,18 @@ export function initNativeApi (taro) { ...restOptions, success: (res) => { success?.(res) + complete?.(res) resolve(res) }, fail: (err) => { - fail?.(err) + try { + fail?.(err) + } catch (e) { + // ignore + } + complete?.(err) reject(err) - }, - complete + } }) }) }