uni-helper / uni-use

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

新增 useRouter 对路由参数的支持 #44

Closed zhuddan closed 1 month ago

zhuddan commented 1 month ago

描述

这个 PR 新增了类似 vue router 的 query 参数模式。

额外上下文

我明白这个模式不符合 uni-app 的默认跳转方式,但我习惯了 Vue 原生路由的参数传递方式,因此非常需要这个功能。它支持在路由跳转时携带参数,并在页面中获取这些参数。以下是一个使用示例:

import { useRouter } from '@uni-helper/uni-use';
import { ref, watchEffect } from 'vue';

const router = useRouter();

// 路由跳转,携带参数
router.navigate({ url: '/pages/topics/index', params: { foo: 1 } });

// 路由重定向,携带参数
router.navigate({ url: '/pages/auth/login', params: { bar: 'bar' } });

// 获取当前页路由参数
const id = computed(() => currentParams.value.id);

// 使用当前页路由参数获取数据
const data = ref();

watchEffect(async () => {
  const response = await fetch(
    `https://example.com/${id}`
  );
  data.value = await response.json();
});

尽管这个模式与 uni-app 的跳转机制有所冲突,但它极大地提高了我的开发效率。关于测试,由于单元测试不支持 getCurrentPages,目前尚未找到合适的解决方案,因此我只测试了 utils 中新增的函数。文档部分已根据新功能进行了相应修改。

请仔细审查这个 PR 的变更内容,如果可以,希望能够合并,因为这个功能对我的项目非常重要。

coderabbitai[bot] commented 1 month ago

[!CAUTION]

Review failed

The head commit changed during the review from 981fcc96f05061096b13d4d6cdc4435f910a9e02 to 28e7d2a53a453814f7f2ba4bbd694e7d051841b1.


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 Configuration 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.
wtto00 commented 1 month ago

感觉应该是 query 参数吧, params 参数 uniapp 不支持。 你这里用 params 表示了 vue routerquery 的概念。

建议这里不要修改原对象options,重新赋值给一个新的对象,传给uni的api。以防止用户执行完语句后,再次使用参数对象,会出现意想不到的修改 https://github.com/zhuddan/uni-use/blob/28e7d2a53a453814f7f2ba4bbd694e7d051841b1/src/useRouter/index.ts#L102-L108

zhuddan commented 1 month ago

@wtto00,谢谢你的回复。由于发现了一个严重的问题,我已关闭了这个 PR。请移步到 这个 PR 以了解更多信息。

此外,基于你的建议,我已经进行了如下修改: