Skip to content

feat(calendarcard): 对函数做了优化处理#3284

Merged
oasis-cloud merged 1 commit intojdf2e:feat_v3.xfrom
xiaoyatong:feat3/calendarcard
Jun 26, 2025
Merged

feat(calendarcard): 对函数做了优化处理#3284
oasis-cloud merged 1 commit intojdf2e:feat_v3.xfrom
xiaoyatong:feat3/calendarcard

Conversation

@xiaoyatong
Copy link
Collaborator

@xiaoyatong xiaoyatong commented Jun 26, 2025

🤔 这个变动的性质是?

  • 新特性提交
  • 日常 bug 修复
  • 站点、文档改进
  • 演示代码改进
  • 组件样式/交互改进
  • TypeScript 定义更新
  • 包体积优化
  • 性能优化
  • 功能增强
  • 国际化改进
  • 重构
  • 代码风格优化
  • 测试用例
  • 分支合并
  • 其他改动(是关于什么的改动?)

🔗 相关 Issue

💡 需求背景和解决方案

☑️ 请求合并前的自查清单

⚠️ 请自检并全部勾选全部选项⚠️

  • 文档已补充或无须补充
  • 代码演示已提供或无须提供
  • TypeScript 定义已补充或无须补充
  • fork仓库代码是否为最新避免文件冲突
  • Files changed 没有 package.json lock 等无关文件

Summary by CodeRabbit

  • Bug Fixes
    • 修复了日历组件在月份变化时未能始终调用最新页面切换回调的问题,提升了回调的准确性和组件稳定性。

@xiaoyatong xiaoyatong linked an issue Jun 26, 2025 that may be closed by this pull request
@github-actions github-actions bot added action:review This PR needs more reviews (less than 2 approvals) 3.x Target branch 3.x labels Jun 26, 2025
@xiaoyatong xiaoyatong requested a review from oasis-cloud June 26, 2025 10:30
@coderabbitai
Copy link

coderabbitai bot commented Jun 26, 2025

Walkthrough

本次更改主要针对 CalendarCard 组件,优化了 onPageChange 回调的使用方式。通过引入 useRef 和相关的 useEffect,确保回调总是最新,避免因回调引用变化导致的多余渲染或副作用执行。

Changes

文件/分组 变更摘要
src/packages/calendarcard/calendarcard.taro.tsx
src/packages/calendarcard/calendarcard.tsx
引入 useRef,用 ref 持有最新的 onPageChange 回调,并用 useEffect 保持同步。修改副作用调用方式,通过 ref 调用回调,优化依赖数组。

Suggested reviewers

  • irisSong
  • oasis-cloud

Poem

小兔挥爪理回调,
useRef 把关不动摇。
副作用里巧安排,
最新回调随时到。
日历翻页如风跑,
代码整洁兔儿笑!

✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • 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 explain this code block.
    • @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 gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @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.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

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 using 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 generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this 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.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

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 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 for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@codecov
Copy link

codecov bot commented Jun 26, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 87.79%. Comparing base (5b7eb80) to head (02d2e65).
Report is 1 commits behind head on feat_v3.x.

Additional details and impacted files
@@              Coverage Diff              @@
##           feat_v3.x    #3284      +/-   ##
=============================================
- Coverage      87.79%   87.79%   -0.01%     
=============================================
  Files            290      290              
  Lines          19089    19093       +4     
  Branches        2939     2939              
=============================================
+ Hits           16760    16763       +3     
- Misses          2324     2325       +1     
  Partials           5        5              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
src/packages/calendarcard/calendarcard.taro.tsx (1)

188-192: 发现潜在的迭代问题

注意到 isActive 函数中使用了 for (const val in innerValue),这在数组上使用 for...in 会迭代索引而不是值。虽然这不是当前 PR 的更改内容,但建议修复。

建议修改为:

-    for (const val in innerValue) {
-      if (isSameDay(day, innerValue[val])) {
+    for (const val of innerValue) {
+      if (isSameDay(day, val)) {
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5b7eb80 and 02d2e65.

📒 Files selected for processing (2)
  • src/packages/calendarcard/calendarcard.taro.tsx (3 hunks)
  • src/packages/calendarcard/calendarcard.tsx (3 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: test
  • GitHub Check: build
🔇 Additional comments (8)
src/packages/calendarcard/calendarcard.tsx (4)

1-1: 正确引入 useRef

引入 useRef 用于优化回调处理,符合性能优化的目标。


53-53: 创建回调引用存储

使用 useRef 存储 onPageChange 回调是正确的优化模式,可以避免因回调引用变化导致的不必要重新渲染。


137-139: 正确更新回调引用

使用 useEffect 确保 ref 中始终存储最新的 onPageChange 回调,这是标准的优化实践。


144-145: 优化效果执行和依赖

通过 ref 调用回调并从依赖数组中移除 onPageChange 是关键的性能优化。这样可以避免仅因回调函数引用变化而重新执行效果,同时确保调用的始终是最新的回调。

src/packages/calendarcard/calendarcard.taro.tsx (4)

1-1: 正确引入 useRef

与主文件保持一致,正确引入 useRef 用于优化。


53-53: 创建回调引用存储

与主文件保持一致的优化模式,实现正确。


136-138: 正确更新回调引用

与主文件保持一致,使用 useEffect 更新回调引用。


143-144: 优化效果执行和依赖

与主文件保持一致的性能优化实现,通过 ref 调用回调并优化依赖数组。

@oasis-cloud oasis-cloud merged commit e1faac3 into jdf2e:feat_v3.x Jun 26, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3.x Target branch 3.x action:review This PR needs more reviews (less than 2 approvals) size/S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CalendarCard 日历卡片onPageChange触发过多

2 participants