Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(card): harmony适配 #2800

Merged
merged 1 commit into from
Nov 29, 2024
Merged

Conversation

irisSong
Copy link
Collaborator

@irisSong irisSong commented Nov 27, 2024

🤔 这个变动的性质是?

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

🔗 相关 Issue

💡 需求背景和解决方案

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

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

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

Summary by CodeRabbit

  • 新特性

    • 更新了“特色组件”部分的Card组件版本至3.0.0,并新增TrendArrow组件。
    • Demo2Demo3组件中引入了Tag组件,替代了之前的span元素,提升了标签的视觉表现。
    • 所有演示组件的图片源URL已更新为HTTPS,增强了安全性。
  • 样式

    • 移除了旧的价格样式,并引入了新的样式类nut-price-integernut-price-decimal
  • 修复

    • 更新了多个组件的图片源,确保使用安全的HTTPS协议。

Copy link

coderabbitai bot commented Nov 27, 2024

Walkthrough

此次更改主要涉及多个组件的版本更新和样式调整。src/config.json 文件中,Card 组件的版本从 2.0.0 更新至 3.0.0,同时新增了 TrendArrow 组件,版本为 3.0.0。在 src/packages/card/card.scss 中,移除了与 .nut-price 类相关的样式,并新增了 .nut-price-integer.nut-price-decimal 的样式。在多个演示文件中,图像源从协议相对 URL 更新为绝对 HTTPS URL,并引入了新的 Tag 组件以替代原有的 span 标签。

Changes

文件路径 更改摘要
src/config.json 更新 Card 组件版本至 3.0.0,新增 TrendArrow 组件,版本为 3.0.0
src/packages/card/card.scss 移除 .nut-price.nut-price-big.nut-price-symbol.nut-price-point.nut-price-small 的样式;新增 .nut-price-integer.nut-price-decimal 的样式。
src/packages/card/card.taro.tsx 新增 Image 组件导入,替换 <img> 标签为 <Image> 组件。
src/packages/card/demos/h5/demo2.tsx 更新 Demo2 组件,使用 Tag 组件替代 span 标签,保留 wordStyles 对象。
src/packages/card/demos/taro/demo1.tsx 更新 src 属性为绝对 HTTPS URL。
src/packages/card/demos/taro/demo2.tsx 更新 src 属性为 HTTPS URL,使用 Tag 组件替代 span 标签,调整样式。
src/packages/card/demos/taro/demo3.tsx 更新 src 属性为 HTTPS URL,新增 Image 组件导入,调整 tagStyles<img> 标签为 <Image> 组件。
src/packages/card/demos/taro/demo4.tsx 更新 src 属性为 HTTPS URL。
src/packages/card/demos/taro/demo5.tsx 更新 src 属性为 HTTPS URL,调整 extra 属性中的 fontSize 使用 pxTransform
src/packages/card/demos/taro/demo6.tsx 更新 src 属性为 HTTPS URL,使用 <View> 组件替代 <div>,调整样式为响应式设计。

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Card
    participant Image
    participant Tag

    User->>Card: Request to display card
    Card->>Image: Load image with HTTPS URL
    Card->>Tag: Render tags using Tag component
    Tag->>User: Display tags
    Image->>User: Display image
Loading

Possibly related PRs

Suggested labels

3.x

Suggested reviewers

  • oasis-cloud

🐰 在草地上跳跃,版本更新真美好,
新组件加入,样式更妙,
HTTPS 安全,标签更鲜明,
小兔子欢呼,代码如春风! 🌼


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
🪧 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.
    • 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 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 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 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 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.

@github-actions github-actions bot added the 3.x label Nov 27, 2024
Copy link

codecov bot commented Nov 27, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 83.99%. Comparing base (9332996) to head (8453fd7).
Report is 4 commits behind head on feat_v3.x.

Additional details and impacted files
@@            Coverage Diff             @@
##           feat_v3.x    #2800   +/-   ##
==========================================
  Coverage      83.99%   83.99%           
==========================================
  Files            220      220           
  Lines          17885    17885           
  Branches        2679     2679           
==========================================
  Hits           15023    15023           
  Misses          2857     2857           
  Partials           5        5           

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

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: 1

🧹 Outside diff range and nitpick comments (9)
src/packages/card/demos/taro/demo1.tsx (1)

Line range hint 15-24: 建议添加图片加载状态处理

为了提供更好的用户体验,建议在 Card 组件中添加图片加载状态的处理。

建议如下修改:

    <Card
      src={state.src}
+     loading="lazy"
+     fallback="加载中..."
      title={state.title}
      price={state.price}
      vipPrice={state.vipPrice}
      shopDescription={state.shopDescription}
      delivery={state.delivery}
      shopName={state.shopName}
    />
src/packages/card/demos/taro/demo4.tsx (1)

Line range hint 1-31: 组件结构规范,实现清晰

代码实现符合以下最佳实践:

  • 使用了适当的类型和属性声明
  • 组件结构清晰,便于维护
  • 正确使用了Taro的View组件

建议考虑以下优化:

  • 可以将state对象转换为useState hook,使组件更具响应性
  • 考虑为props添加TypeScript类型定义,提高代码的可维护性
-const state = {
+const [state] = React.useState({
   src: 'https://img10.360buyimg.com/...',
   title: '【活蟹】湖塘煙雨...',
   // ... other properties
-}
+})
src/packages/card/demos/taro/demo6.tsx (1)

18-26: 优化描述部分的实现

使用 Taro 的 View 组件替代原生 div,并通过 pxTransform 实现响应式样式,这些改动都符合 Taro 的开发规范。建议考虑以下优化:

  1. 可以将样式提取到单独的样式文件中
  2. 考虑使用 Taro 的主题变量来管理颜色值

建议的重构方案:

+ // styles.scss
+ .card-description {
+   font-size: pxTransform(14);
+   padding: pxTransform(10) 0;
+   color: var(--nutui-gray-3, #999);
+ }

- <View
-   style={{
-     fontSize: pxTransform(14),
-     padding: `${pxTransform(10)} 0`,
-     color: '#999',
-   }}
- >
+ <View className="card-description">
src/packages/card/demos/taro/demo5.tsx (1)

4-4: 优化:使用pxTransform提升响应式设计

引入并使用pxTransform工具函数来处理字体大小,这样能更好地适配不同设备,提升了组件的可用性。这个改动与harmony适配的目标相符。

建议在其他涉及像素单位的地方也统一使用pxTransform,以确保整体的一致性和适配性。

Also applies to: 27-27

src/packages/card/demos/taro/demo3.tsx (1)

17-19: 样式更新建议

使用 inline-flexpxTransform 的改动是好的,但建议考虑以下优化:

  • 可以将这些样式迁移到统一的样式文件中
  • 考虑使用主题变量来统一间距管理
+ // 建议将样式迁移到单独的样式文件
+ // styles/card.scss
+ .price-tag {
+   display: inline-flex;
+   margin-right: var(--nutui-spacing-2);
+   margin-left: var(--nutui-spacing-1);
+ }
src/packages/card/demos/h5/demo2.tsx (1)

Line range hint 4-19: 建议为 state 对象添加类型定义

为了提高代码的类型安全性和可维护性,建议添加接口定义。

建议添加如下类型定义:

interface State {
  src: string
  title: string
  price: string
  vipPrice: string
  shopDescription: string
  delivery: string
  shopName: string
}

const state: State = {
  // ... existing properties
}
src/packages/card/demos/taro/demo2.tsx (1)

38-45: 建议提取Tag样式配置

使用Tag组件替代span标签提升了代码的语义化,但样式配置直接写在JSX中可能影响复用性。

建议将Tag的样式配置提取到常量中:

+const TAG_CONFIG = {
+  background: "#f2f2f7",
+  color: "#999999"
+}

-<Tag
-  background="#f2f2f7"
-  color="#999999"
-  key={item}
-  style={wordStyles}
->
+<Tag
+  {...TAG_CONFIG}
+  key={item}
+  style={wordStyles}
+>
src/packages/card/card.scss (1)

46-48: 价格样式更新符合新版本规范

新增的价格整数和小数部分样式与组件升级到 3.0.0 版本的改动保持一致,使用统一的金色突出显示价格信息。

建议考虑以下优化:

  • 将颜色值 #d2a448 提取为 SCSS 变量,便于统一管理和主题定制
+// 在变量文件中定义
+$price-highlight-color: #d2a448;
+
 .nut-price-integer,
 .nut-price-decimal {
-  color: #d2a448;
+  color: $price-highlight-color;
 }
src/packages/card/card.taro.tsx (1)

62-62: 建议增强图片组件的属性配置

当前实现仅传递了 src 属性,建议考虑添加以下配置以提升组件的健壮性:

  • 添加图片加载失败的降级处理
  • 考虑添加 alt 属性提升可访问性
  • 可以添加 loading 属性优化加载体验

建议参考以下代码改进:

-        <Image src={src} />
+        <Image
+          src={src}
+          alt={title}
+          loading="lazy"
+          onError={(e) => {
+            console.warn('图片加载失败', e);
+          }}
+        />
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 9332996 and 8453fd7.

📒 Files selected for processing (10)
  • src/config.json (1 hunks)
  • src/packages/card/card.scss (1 hunks)
  • src/packages/card/card.taro.tsx (2 hunks)
  • src/packages/card/demos/h5/demo2.tsx (2 hunks)
  • src/packages/card/demos/taro/demo1.tsx (1 hunks)
  • src/packages/card/demos/taro/demo2.tsx (3 hunks)
  • src/packages/card/demos/taro/demo3.tsx (3 hunks)
  • src/packages/card/demos/taro/demo4.tsx (1 hunks)
  • src/packages/card/demos/taro/demo5.tsx (2 hunks)
  • src/packages/card/demos/taro/demo6.tsx (2 hunks)
🔇 Additional comments (14)
src/packages/card/demos/taro/demo1.tsx (1)

6-6: 安全性改进:使用 HTTPS URL

将协议相对 URL 更改为 HTTPS 绝对 URL 是一个很好的改进,这样可以确保在所有环境中都使用安全的连接加载图片。

src/packages/card/demos/taro/demo4.tsx (1)

7-7: 改进:使用了更安全的图片URL格式

将协议相对URL更改为明确的HTTPS URL是一个很好的改进,这样可以:

  • 确保始终使用安全的HTTPS协议
  • 避免在不同环境下可能出现的协议不一致问题
  • 提高了代码的可预测性和安全性

让我们验证一下图片的可访问性:

✅ Verification successful

图片资源验证通过,URL更改是安全且有效的

验证结果显示图片资源:

  • HTTP状态码为200,表示资源可正常访问
  • 图片格式为JPEG,大小约13KB
  • 启用了跨域访问支持(CORS)
  • 设置了合理的缓存策略
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 描述:验证图片URL的可访问性和响应状态

curl -I "https://img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg"

Length of output: 1040

src/packages/card/demos/taro/demo6.tsx (2)

3-4: 导入必要的 Taro 组件和工具函数

新增的导入符合 Taro 的最佳实践,使用 Taro 原生组件和工具函数可以确保更好的跨平台兼容性。


8-8: 图片链接更新为 HTTPS

将图片源从 HTTP 更新为 HTTPS 提高了安全性,这是一个很好的改进。

src/packages/card/demos/taro/demo5.tsx (1)

8-8: 安全性改进:使用HTTPS图片源

将图片URL从相对协议更新为HTTPS,增强了安全性和可靠性。

src/packages/card/demos/taro/demo3.tsx (2)

2-2: 导入变更正确!

@nutui/nutui-react-taro 导入 Image 组件是合理的,这与组件的使用相符。


7-7: 图片URL更新合理!

将协议相对URL更改为HTTPS绝对URL提高了安全性和可靠性。

src/packages/card/demos/h5/demo2.tsx (1)

36-43: 使用 Tag 组件替换 span 标签是个很好的改进

使用语义化的 Tag 组件替代原有的 span 标签,不仅提高了代码的可维护性,还确保了与设计系统的一致性。样式配置也很合理。

src/packages/card/demos/taro/demo2.tsx (4)

2-2: 导入变更符合组件重构要求

新增的 Tag 组件导入与代码重构方向一致,有助于提高代码的语义化和可维护性。


8-8: 图片URL更新为HTTPS协议

将图片URL从相对协议更新为HTTPS协议是一个很好的安全性改进。


18-18: 请确认样式简化的影响

样式对象被简化为只保留了marginRight,并使用了pxTransform工具函数。

请运行以下脚本检查是否有其他组件依赖被移除的样式:

✅ Verification successful

Let me check the content of both demo files to compare the styles.


样式简化是安全的

经过验证,样式简化是合理的:

  • H5版本和Taro版本的wordStyles对象都只包含marginRight属性
  • 唯一的区别是H5使用'5px'而Taro使用pxTransform(5),这是正确的平台适配
  • 没有其他组件依赖这个样式对象
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 搜索可能使用相同样式的其他组件
rg "wordStyles" src/packages/card/

Length of output: 302


Script:

#!/bin/bash
# Check content of both demo files
echo "=== Content of demo2.tsx (Taro) ==="
cat src/packages/card/demos/taro/demo2.tsx

echo -e "\n=== Content of demo2.tsx (H5) ==="
cat src/packages/card/demos/h5/demo2.tsx

Length of output: 2819


32-33: 布局变更需要验证兼容性

将display属性从inline-flex更改为flex,同时使用pxTransform统一了边距单位。

建议验证在不同设备上的显示效果:

src/packages/card/card.taro.tsx (1)

6-6: 导入更改符合跨平台适配要求!

引入自定义的 Image 组件来替代原生 img 标签是正确的做法,这样可以确保在不同平台(包括鸿蒙系统)上保持一致的图片渲染行为。

src/config.json (1)

Line range hint 1179-1187: 请验证 Card 组件的重大版本更新

Card 组件版本从 2.0.0 升级到 3.0.0 是一个重大版本更新,这可能包含破坏性更改。

运行以下脚本来验证相关文档是否已更新:

✅ Verification successful

Let me gather more information about the Card component changes.


Let me check for breaking changes in the Card component.


Let me check the actual changes in the Card component implementation and demos.


Card 组件版本更新已确认

根据代码分析,Card 组件从 2.0.0 升级到 3.0.0 的变更主要是为了适配 harmony,组件 API 和功能保持稳定,没有发现破坏性更改:

  • Props 接口保持一致,包括 src、title、price、vipPrice、shopDescription 等属性
  • 组件实现逻辑没有重大变化
  • 示例代码的使用方式保持不变
  • 迁移指南中没有列出 Card 组件的不兼容更新
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 描述:检查 Card 组件的文档更新

# 检查文档文件
fd -t f "card.*\.md$" docs/

# 检查 CHANGELOG
fd -t f "CHANGELOG\.md$" | xargs rg -A 5 "Card.*3\.0\.0"

# 检查是否有相关的迁移指南
fd -t f "migrate.*\.md$" | xargs rg -A 5 "Card"

Length of output: 1104


Script:

#!/bin/bash
# 检查 Card 组件的源代码变更
rg -g "!*.{json,md}" -A 5 "Card" src/

# 检查是否有测试文件的更新
fd -t f "card.*test.*" src/

# 检查组件目录结构
fd "card" -t d src/

Length of output: 81599


Script:

#!/bin/bash
# 检查 Card 组件的变更历史
rg -g "!*.{json,md}" "version.*3\.0\.0.*Card" src/

# 检查 Card 组件的 Props 变更
ast-grep --pattern 'export interface CardProps {
  $$$
}'

# 检查 Card 组件的使用示例
fd -t f "demo.*\.(tsx|jsx)$" src/packages/card/

Length of output: 677


Script:

#!/bin/bash
# 检查 Card 组件的具体实现变化
rg -A 5 "export const Card" src/packages/card/

# 检查迁移指南中关于 Card 的具体说明
rg -A 10 "### Card" migrate-from-v2.md

# 检查示例代码中的变更
cat src/packages/card/demos/h5/demo1.tsx

Length of output: 1721

src/packages/card/demos/taro/demo3.tsx Show resolved Hide resolved
@@ -23,7 +24,7 @@ const Demo5 = () => {
shopDescription={state.shopDescription}
delivery={state.delivery}
shopName={state.shopName}
extra={<View style={{ fontSize: '12px' }}>自定义</View>}
extra={<View style={{ fontSize: pxTransform(12) }}>自定义</View>}
Copy link
Collaborator

@oasis-cloud oasis-cloud Nov 28, 2024

Choose a reason for hiding this comment

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

我看现在直接写数字表现就挺好的,可以试一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants