-
Notifications
You must be signed in to change notification settings - Fork 4.9k
Open
Labels
F-reactFramework - ReactFramework - ReactT-h5Target - 编译到 H5Target - 编译到 H5V-3Version - 3.xVersion - 3.x
Description
相关平台
H5
浏览器版本: Chrome 最新
使用框架: React
复现步骤
假设 页面栈 是如下:
const stacks = ['pageA', 'pageB', 'pageC', 'pageD', 'pageB']
Taro.redirectTo({
url: pageB
})
这时页面会丢失栈,stacks 变成 ['pageA', 'pageB']
期望结果
重定向跳转页面不丢失栈
实际结果
重定向跳转页面丢失栈
环境信息
Taro CLI 3.6.28 environment info:
System:
OS: macOS 14.4
Shell: 5.9 - /bin/zsh
Binaries:
Node: 18.20.2 - ~/.nvm/versions/node/v18.20.2/bin/node
Yarn: 1.22.22 - ~/.nvm/versions/node/v18.20.2/bin/yarn
npm: 10.5.0 - ~/.nvm/versions/node/v18.20.2/bin/npm
npmPackages:
@tarojs/cli: 3.6.28 => 3.6.28
@tarojs/components: 3.6.28 => 3.6.28
@tarojs/helper: 3.6.28 => 3.6.28
@tarojs/plugin-framework-react: 3.6.28 => 3.6.28
@tarojs/plugin-platform-alipay: 3.6.28 => 3.6.28
@tarojs/plugin-platform-h5: 3.6.28 => 3.6.28
@tarojs/plugin-platform-jd: 3.6.28 => 3.6.28
@tarojs/plugin-platform-qq: 3.6.28 => 3.6.28
@tarojs/plugin-platform-swan: 3.6.28 => 3.6.28
@tarojs/plugin-platform-tt: 3.6.28 => 3.6.28
@tarojs/plugin-platform-weapp: 3.6.28 => 3.6.28
@tarojs/react: 3.6.28 => 3.6.28
@tarojs/router: ^3.6.28 => 3.6.28
@tarojs/runtime: 3.6.28 => 3.6.28
@tarojs/shared: 3.6.28 => 3.6.28
@tarojs/taro: 3.6.28 => 3.6.28
@tarojs/taro-loader: 3.6.28 => 3.6.28
@tarojs/webpack5-runner: 3.6.28 => 3.6.28
babel-preset-taro: 3.6.28 => 3.6.28
eslint-config-taro: 3.6.28 => 3.6.28
react: ^18.0.0 => 18.3.1
补充信息
看了源码是下面问题导致:
packages/taro-router/src/router/stack.ts
// 获取最近页面index 是从1 开始遍历,
getLastIndex (pathname: string, stateWith = 1) {
const list = [...this.stacks].reverse()
return list.findIndex((page, i) => i >= stateWith && page.path?.replace(/\?.*/g, '') === pathname)
}
请教为什么从1 开始,改成0 就没这个问题
Metadata
Metadata
Assignees
Labels
F-reactFramework - ReactFramework - ReactT-h5Target - 编译到 H5Target - 编译到 H5V-3Version - 3.xVersion - 3.x
Type
Projects
Status
Padding