uni-helper / uni-use

uni-app (vue3) 组合式工具集
MIT License
128 stars 16 forks source link

fix: 修复 uni.navigateTo 跳转超出路由堆栈 #41

Closed sunpm closed 3 months ago

sunpm commented 3 months ago

Description 描述

当超过10个页面时,用 uni.redirectTo API 替换 uni.navigatorTo

Linked Issues 关联的 Issues

Additional context 额外上下文

Summary by CodeRabbit

coderabbitai[bot] commented 3 months ago

Walkthrough

In the src/useRouter/index.ts file, the navigateTo function has been enhanced to improve navigation logic. Now, before using the navigateTo method, it checks if the number of pages opened exceeds or equals 10 and opts for redirectTo in such cases to better manage page navigation stack limits.

Changes

File Change Summary
src/useRouter/index.ts Enhanced the navigateTo function to check the number of pages opened and use redirectTo if necessary.

Sequence Diagram(s)

sequenceDiagram
    participant Caller as Caller
    participant useRouter as useRouter
    participant navigateTo as navigateTo
    participant redirectTo as redirectTo

    Caller->>useRouter: call navigateTo(options)
    useRouter->>navigateTo: check page stack size
    navigateTo-->>useRouter: result of page stack size check
    alt page stack size >= 10
        useRouter->>redirectTo: call redirectTo(options)
        redirectTo-->>useRouter: redirection complete
    else
        useRouter->>navigateTo: proceed with navigateTo(options)
        navigateTo-->>useRouter: navigation complete
    end
    useRouter-->>Caller: navigation result

Poem

Amidst the paths of code we tread, A new logic in navigateTo is spread, Ten pages open, redirect we must, In our stack, we place our trust. 🐰✨


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
edwinhuish commented 3 months ago

超过10个就直接变redirect有点不太好。例如刚好第11个页面会莫名没有历史记录。

请问现在是导致路由堆栈溢出导致出错了吗?请告知具体报错。

最理想的解决方案是设定最大历史数量,超过部分删除。

sunpm commented 3 months ago

超过10个就直接变redirect有点不太好。例如刚好第11个页面会莫名没有历史记录。

请问现在是导致路由堆栈溢出导致出错了吗?请告知具体报错。

最理想的解决方案是设定最大历史数量,超过部分删除。

小程序路由堆栈最大上限是10个,超过上限会导致路由api跳转失败

edwinhuish commented 3 months ago

已修复一处暗坑。

由 navigatorTo 突然变为 redirectTo 改变了用户的使用意图。

至于小程序的限制,这个交由用户去掌控吧