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

feat(Tabs): tabs 适配鸿蒙 #2820

Merged
merged 6 commits into from
Dec 10, 2024
Merged

Conversation

xiaoyatong
Copy link
Collaborator

@xiaoyatong xiaoyatong commented Dec 3, 2024

🤔 这个变动的性质是?

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

🔗 相关 Issue

💡 需求背景和解决方案

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

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

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

Summary by CodeRabbit

版本更新说明

  • 新功能

    • 添加了对多个新组件(如 CalendarCard, Input, SearchBar 等)的支持,版本更新至 3.0.0
    • 引入了 tabpane 作为新的子组件,增强了组件识别能力。
  • 样式改进

    • 更新了标签组件的样式,确保图标和文本在活动状态下的一致性。
    • 标签标题的样式进行了调整,支持水平滚动。
  • 文档更新

    • 新增翻译键 title4_1,确保多语言支持的准确性。
  • 重构

    • 统一了多个组件的状态变量命名,提高了代码可读性与一致性。

Copy link

coderabbitai bot commented Dec 3, 2024

Walkthrough

本次更改涉及多个文件,主要集中在组件的状态管理、版本更新和样式改进上。copy-file.jsupdate-taro-entry.js 脚本的修改增强了对新组件(如 tabpane)的支持,并改进了配置生成逻辑。src/config.json 文件中更新了多个组件的版本,并引入了一些新组件。多个 demo 文件中的状态变量进行了重命名,以提高代码的清晰度和一致性,同时还对样式文件进行了调整,以增强视觉效果。

Changes

文件路径 更改摘要
scripts/rn/copy-file.js 添加了 tabpanechildAdaptedArray,更新了 copyFile 函数以避免修改 icon 组件的文件。
scripts/rn/update-taro-entry.js 添加了 tabpane,定义了 createConfigupdatePages 函数以生成和更新 Taro 应用的配置。
src/config.json 多个组件版本从 2.0.0 更新到 3.0.0,新增多个组件,并调整了部分组件的 show 属性。
src/packages/tabs/demo*.tsx 多个 demo 文件中将状态变量 tab1valuetab2value 等重命名为 tabvalue,以提高一致性。
src/packages/tabs/demos/h5/demo*.tsx 进行状态变量重命名,更新 Tabs 组件的 valueonChange 处理函数。
src/packages/tabs/demos/taro/demo*.tsx 进行状态变量重命名,更新 Tabs 组件的 valueonChange 处理函数,部分内容改为使用 Taro 组件。
src/packages/tabs/tabs.scss 更新 .nut-tabs-titles-item.nut-icon 的样式,以增强视觉一致性和美观性。

Possibly related PRs

Suggested reviewers

  • xiaoyatong

兔子欢快地跳跃着,
新组件如花绽放,
状态管理更清晰,
视觉效果更美丽,
代码如诗般流畅,
让我们一起欢庆吧! 🐇✨


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 generate docstrings to generate docstrings for this PR. (Experiment)
  • @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.

Copy link

codecov bot commented Dec 3, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 84.14%. Comparing base (fbfe98f) to head (89226ba).
Report is 13 commits behind head on feat_v3.x.

Additional details and impacted files
@@            Coverage Diff             @@
##           feat_v3.x    #2820   +/-   ##
==========================================
  Coverage      84.13%   84.14%           
==========================================
  Files            273      273           
  Lines          18101    18103    +2     
  Branches        2691     2690    -1     
==========================================
+ Hits           15230    15232    +2     
  Misses          2866     2866           
  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: 14

🧹 Outside diff range and nitpick comments (30)
src/packages/tabs/demos/taro/demo20.tsx (1)

Line range hint 4-5: 优化状态变量命名,提高代码可读性

当前的状态变量名称 tab8value 缺乏描述性,建议使用更有意义的命名。

建议修改为:

-const [tab8value, setTab8value] = useState<string | number>('0')
+const [outerTabValue, setOuterTabValue] = useState<string | number>('0')

-value={tab8value}
-onChange={(value) => {
-  setTab8value(value)
-}}
+value={outerTabValue}
+onChange={(value) => {
+  setOuterTabValue(value)
+}}

Also applies to: 11-14

src/packages/tabs/demos/taro/demo17.tsx (2)

11-14: 建议优化类型声明和事件处理

虽然代码功能正确,但可以进一步改进:

  1. onChange 的参数添加明确的类型声明
  2. 考虑使用更简洁的箭头函数写法

建议如下修改:

- onChange={(value) => {
-   setTabvalue(value)
- }}
+ onChange={(value: string | number) => setTabvalue(value)}

18-20: 使用 Text 组件包装内容是正确的,但建议添加样式

内容使用 Text 组件包装是符合 Taro 规范的,但建议添加一些基础样式以提升用户体验。

建议添加样式:

- <Text>Tab {item}</Text>
+ <Text style={{ padding: '12px', display: 'block' }}>Tab {item}</Text>
src/packages/tabs/demos/taro/demo1.tsx (1)

Line range hint 7-17: 建议添加鸿蒙系统特定的适配

当前的实现缺少针对鸿蒙系统的特定适配。建议:

  1. 添加鸿蒙系统特有的交互方式
  2. 考虑适配鸿蒙系统的设计规范
  3. 增加相关文档说明
src/packages/tabs/demos/taro/demo4.tsx (1)

Line range hint 12-17: 建议适配鸿蒙系统的卡片样式

当前的卡片样式可能需要调整:

  1. 建议参考鸿蒙设计规范调整 card 类型的视觉效果
  2. 考虑添加鸿蒙特有的动画效果
  3. 适配鸿蒙系统的触控反馈
src/packages/tabs/demos/taro/demo5.tsx (1)

5-5: 建议增加鸿蒙系统按钮样式适配

代码变更保持了与其他文件的一致性,但建议:

  1. 为鸿蒙系统添加特定的按钮样式
  2. 确保按钮交互符合鸿蒙系统的设计规范

Also applies to: 8-8, 10-10

src/packages/tabs/demos/h5/demo1.tsx (1)

5-5: 建议增加鸿蒙系统演示用例

当前的 H5 演示代码需要以下改进:

  1. 建议添加鸿蒙系统特定的演示用例,展示适配效果
  2. 补充文档说明组件在不同平台的差异性

Also applies to: 9-9, 11-11

src/packages/tabs/demos/taro/demo8.tsx (1)

Line range hint 1-1: 缺少明确的鸿蒙系统适配实现

根据 PR 描述,本次改动的主要目标是适配鸿蒙系统,但目前的改动主要集中在状态管理的重构上。建议:

  1. 明确列出鸿蒙系统适配需要解决的具体问题
  2. 添加鸿蒙系统特定的样式和交互处理
  3. 补充相关文档和测试用例
src/packages/tabs/demos/h5/demo3.tsx (1)

5-5: 状态变量命名优化

变量重命名提高了代码的可读性和一致性,但建议考虑以下几点:

  1. 考虑使用更具描述性的命名,比如 activeTabIndexselectedTab
  2. 为了适配鸿蒙系统,可能需要添加特定的属性或处理逻辑

建议的重构方案:

-const [tabvalue, setTabvalue] = useState<string | number>('0')
+const [activeTabIndex, setActiveTabIndex] = useState<string | number>('0')

Also applies to: 9-9, 11-11

src/packages/tabs/demos/h5/demo6.tsx (1)

5-5: 建议完善文档和示例说明

代码变更保持了一致性,但建议:

  1. 添加对鸿蒙系统特定功能的说明文档
  2. 在示例中展示鸿蒙系统特有的交互方式
  3. 考虑添加适配说明和注意事项

建议在文档中补充以下内容:

  • 鸿蒙系统适配指南
  • 与其他平台的差异说明
  • 特定属性的使用说明

Also applies to: 9-9, 11-11

src/packages/tabs/demos/h5/demo8.tsx (1)

5-5: 状态变量命名优化

状态变量的重命名提高了代码的一致性和可维护性。但是建议考虑以下几点:

  1. 可以考虑添加类型注释来提高代码的可读性
  2. 建议在组件内添加相关注释,说明状态变量的用途

建议改进如下:

- const [tabvalue, setTabvalue] = useState<string | number>('0')
+ // 当前选中的标签页索引
+ const [tabValue, setTabValue] = useState<string | number>('0')

Also applies to: 9-9, 13-13

src/packages/tabs/demos/h5/demo10.tsx (2)

5-5: 完善示例文档和注释

代码变更与其他示例保持一致,建议进行以下改进:

  1. 添加示例说明文档,特别是关于鸿蒙系统的适配说明
  2. 补充不同样式类型(如 divider)的使用场景说明

建议在示例代码中添加以下内容:

import React, { useState } from 'react'
import { Tabs } from '@nutui/nutui-react'

+/**
+ * @description Tabs 标签页示例 - divider 样式
+ * @platform H5, 鸿蒙
+ */
const Demo10 = () => {

Also applies to: 9-9, 13-13


建议完善标签页组件的鸿蒙系统适配

经过验证,目前的情况如下:

  1. 标签页组件(Tabs)缺少鸿蒙系统特有的样式适配,而其他组件(如Button)已经包含了鸿蒙特定的样式条件编译代码
  2. 现有的测试用例主要覆盖了基础功能,但未包含平台特定的测试场景
  3. 缺少鸿蒙平台相关的使用文档说明

建议进行以下改进:

  • 参考Button组件的实现,在tabs.scss中添加鸿蒙平台特定的样式适配
  • 补充鸿蒙系统下的交互行为测试用例
  • 在组件文档中添加鸿蒙平台的使用说明和注意事项
🔗 Analysis chain

Line range hint 1-24: 整体建议

针对标签页组件的鸿蒙适配,建议补充以下内容:

  1. 添加鸿蒙系统特有的交互和样式适配
  2. 完善示例文档,包括兼容性说明
  3. 补充自动化测试用例

建议执行以下验证:


Let me check the test coverage and HarmonyOS configurations in more detail.


Let me check the HarmonyOS specific styles in the tabs component and related files.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查是否有完整的鸿蒙适配方案
echo "检查鸿蒙相关配置..."
fd -t f -e json | xargs rg -l "harmony"

# 检查测试用例覆盖
echo "检查测试用例..."
fd -t f -e test.tsx -e spec.tsx | rg "tabs"

Length of output: 460


Script:

#!/bin/bash
# Check test coverage for tabs component
echo "检查标签页组件测试用例内容..."
cat src/packages/tabs/__test__/tabs.spec.tsx

# Check HarmonyOS specific configurations
echo "检查鸿蒙配置详情..."
cat packages/nutui-harmony/AppScope/resources/base/element/string.json

# Check if there are any HarmonyOS specific styles
echo "检查鸿蒙样式适配..."
fd -t f -e scss -e css | xargs rg -l "harmony"

Length of output: 5726


Script:

#!/bin/bash
# Check if there are any HarmonyOS specific styles in tabs component
echo "检查标签页组件的鸿蒙样式..."
cat src/packages/tabs/tabs.scss

# Check HarmonyOS related styles in other components
echo "检查其他组件的鸿蒙样式示例..."
cat src/packages/button/button.scss | rg -A 5 "harmony"

# Check if there are any HarmonyOS specific documentation
echo "检查鸿蒙相关文档..."
fd -t f -e md | xargs rg -l "harmony"

Length of output: 9533

src/packages/tabs/demos/h5/demo18.tsx (1)

5-6: 建议优化列表生成逻辑

当前的列表生成方式可以更简洁:

- const list = Array.from(new Array(2).keys())
+ const list = [0, 1]

这样的写法更直观,易于理解。

src/packages/tabs/demos/h5/demo11.tsx (1)

5-11: 状态变量命名优化

变量重命名提高了代码一致性,但建议考虑以下几点:

  • 考虑添加相关注释说明状态变量的用途
  • 建议在 onChange 回调中添加相关类型声明
- const [tabvalue, setTabvalue] = useState<string | number>('0')
+ // 当前选中标签页的值
+ const [tabvalue, setTabvalue] = useState<string | number>('0')

  <Tabs
    value={tabvalue}
-   onChange={(value) => {
+   onChange={(value: string | number) => {
      setTabvalue(value)
    }}
src/packages/tabs/demos/h5/demo17.tsx (1)

10-11: 建议优化垂直标签页的高度设置

当前使用固定高度可能在不同设备上显示不一致,建议:

  • 考虑使用响应式高度
  • 为鸿蒙系统适配添加相应的样式处理
  <Tabs
    value={tabvalue}
-   style={{ height: '300px' }}
+   style={{ height: '300px', maxHeight: '50vh' }}
src/packages/tabs/demos/taro/demo11.tsx (2)

Line range hint 1-24: 建议增强跨平台兼容性处理

作为鸿蒙系统适配的一部分,建议:

  1. 添加鸿蒙系统特定的样式和交互处理
  2. 考虑在组件中添加平台判断逻辑
  3. 补充鸿蒙系统相关的文档说明

建议添加平台特定代码:

import React, { useState } from 'react'
import { Tabs } from '@nutui/nutui-react-taro'
+ import { getSystemInfoSync } from '@tarojs/taro'

const Demo11 = () => {
  const [tabvalue, setTabvalue] = useState<string | number>('0')
+ const systemInfo = getSystemInfoSync()
+ const isHarmonyOS = systemInfo.platform === 'harmony'

  return (
    <>
      <Tabs
        value={tabvalue}
+       className={isHarmonyOS ? 'harmony-tabs' : ''}
        onChange={(value) => {
          setTabvalue(value)
        }}
      >

缺少鸿蒙系统相关测试用例的问题确实存在

根据代码分析发现:

  • 在多个demo文件中(demo12-14, demo16, demo22)都标注了"TODO:鸿蒙支持的不好"的注释
  • 现有的测试文件 tabs.spec.tsx 中只包含基础功能测试,没有针对鸿蒙系统的特定测试用例

建议:

  • 添加鸿蒙系统特定的交互测试用例,包括:
    • 触摸事件响应测试
    • 滑动切换效果测试
    • 动画性能测试
  • 针对不同屏幕尺寸的自适应布局测试
  • 补充性能测试用例,特别是在鸿蒙设备上的渲染性能
🔗 Analysis chain

Line range hint 1-24: 缺少鸿蒙系统适配的测试用例

建议添加以下内容:

  1. 鸿蒙系统特定的交互测试用例
  2. 不同屏幕尺寸下的展示效果验证
  3. 性能测试用例
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查是否存在鸿蒙系统相关的测试文件
rg -l "harmony" src/packages/tabs/__tests__/

Length of output: 113


Script:

#!/bin/bash
# 检查测试目录结构
fd -t d "test|tests|__tests__" src/packages/tabs/

# 检查是否有任何鸿蒙相关的文件或内容
rg -i "harmony|hongmeng|鸿蒙" src/packages/tabs/

# 查找所有测试文件
fd -e test.tsx -e test.ts -e spec.tsx -e spec.ts src/packages/tabs/

Length of output: 862


Script:

#!/bin/bash
# 查找测试文件
fd -e test.tsx -e test.ts -e spec.tsx -e spec.ts . src/packages/tabs/

# 检查测试文件内容
rg -A 5 "describe|test|it" src/packages/tabs/__test__/

Length of output: 11394

src/packages/tabs/demos/h5/demo19.tsx (1)

5-6: 命名优化及代码改进建议

变量重命名使代码更加统一,维持了垂直布局标签页的功能完整性。

不过关于数组生成的方式,建议考虑更直观的实现:

-const list = Array.from(new Array(2).keys())
+const list = [0, 1]

这样的写法更加直观,易于理解,特别是当数组元素较少时。如果需要更多的动态性,可以考虑:

const list = Array.from({ length: 2 }, (_, index) => index)

Also applies to: 11-11, 13-13, 18-18

src/packages/tabs/demos/taro/demo16.tsx (1)

6-6: 变量命名更改建议添加相关注释

为了保持代码可维护性,建议:

  1. 在变量重命名时添加注释说明重命名的原因
  2. 确保所有相关的 demo 文件都保持一致的命名规范

Also applies to: 10-10, 12-12

src/packages/tabs/demos/h5/demo15.tsx (1)

Line range hint 21-25: 建议优化数组生成和渲染逻辑

当前的实现可以进行以下优化:

  1. 考虑使用 useMemo 缓存渲染结果
  2. 添加空数组状态的处理
-        {list.map((item) => (
-          <Tabs.TabPane key={item} title={`Tab ${item}`}>
-            Tab {item}
-          </Tabs.TabPane>
-        ))}
+        {useMemo(() => (
+          list.length > 0 ? (
+            list.map((item) => (
+              <Tabs.TabPane key={item} title={`Tab ${item}`}>
+                Tab {item}
+              </Tabs.TabPane>
+            ))
+          ) : (
+            <Tabs.TabPane title="加载中">数据加载中...</Tabs.TabPane>
+          )
+        ), [list])}
src/packages/tabs/demos/taro/demo19.tsx (1)

6-7: 建议统一变量命名风格

为了保持代码的一致性,建议将变量名改为更具描述性的命名:

-const [tab6value, setTab6value] = useState<string | number>('0')
-const list5 = Array.from(new Array(2).keys())
+const [activeTab, setActiveTab] = useState<string | number>('0')
+const tabList = Array.from(new Array(2).keys())
src/packages/tabs/demos/taro/demo15.tsx (1)

6-7: 建议优化状态管理和初始化逻辑

当前的状态管理和初始化逻辑可以进行以下优化:

  1. 使用更具描述性的变量名
  2. 考虑使用常量定义延迟时间
-const [tabvalue, setTabvalue] = useState<string | number>(0)
-const [list, setlist] = useState<number[]>([])
+const [activeTab, setActiveTab] = useState<string | number>(0)
+const [tabList, setTabList] = useState<number[]>([])

+const INIT_DELAY = 3000
 useEffect(() => {
   setTimeout(() => {
-    setTabvalue(2)
-    setlist([...new Array(3).keys()])
+    setActiveTab(2)
+    setTabList([...new Array(3).keys()])
-  }, 3000)
+  }, INIT_DELAY)
 }, [])

Also applies to: 10-11

src/packages/tabs/demos/h5/demo20.tsx (1)

5-6: 代码结构清晰,命名规范统一

代码变更符合以下要求:

  1. 状态变量命名简化且统一
  2. 保持了良好的代码结构
  3. 正确处理了垂直和水平方向的标签页切换

建议:

  • 考虑添加适当的代码注释,说明不同方向组合的用途
  • 可以在示例中添加更多样式来展示实际应用场景

Also applies to: 10-12, 18-20

src/packages/tabs/demos/h5/demo13.tsx (2)

11-11: 优化样式属性值类型

tabStyle 中的 top 属性值使用了字符串 '0px',建议直接使用数值 0,这样更符合 React 的样式规范。

建议修改为:

-  tabStyle={{ position: 'sticky', top: '0px', zIndex: 11 }}
+  tabStyle={{ position: 'sticky', top: 0, zIndex: 11 }}

Line range hint 17-35: 建议优化重复的内容展示逻辑

当前代码中存在大量重复的段落内容,建议使用数组映射来简化代码结构。

建议重构为:

+ const tabContent = (text: string, count: number) => (
+   Array(count).fill(null).map((_, index) => (
+     <p key={index}>{text}</p>
+   ))
+ )

  <Tabs.TabPane title="Tab 1" value="0">
-   <p>Tab 1</p>
-   <p>Tab 1</p>
-   ...
+   {tabContent('Tab 1', 9)}
  </Tabs.TabPane>
  <Tabs.TabPane title="Tab 2" value="1">
-   <p>Tab 2</p>
-   <p>Tab 2</p>
-   ...
+   {tabContent('Tab 2', 8)}
  </Tabs.TabPane>
src/packages/tabs/demos/taro/demo13.tsx (1)

18-35: 优化重复的视图结构

与 H5 版本类似,这里也存在大量重复的 View 组件,建议使用数组映射来优化代码结构。

建议重构为:

+ const tabContent = (text: string, count: number) => (
+   Array(count).fill(null).map((_, index) => (
+     <View key={index}>{text}</View>
+   ))
+ )

  <Tabs.TabPane title="Tab 1">
-   <View>Tab 1</View>
-   <View>Tab 1</View>
-   ...
+   {tabContent('Tab 1', 8)}
  </Tabs.TabPane>
  <Tabs.TabPane title="Tab 2">
-   <View>Tab 2</View>
-   <View>Tab 2</View>
-   ...
+   {tabContent('Tab 2', 8)}
  </Tabs.TabPane>
src/packages/tabs/demos/h5/demo23.tsx (1)

Line range hint 25-36: 建议优化图标渲染逻辑

当前的图标渲染逻辑 {item.icon || null} 可以简化。

建议修改为:

-{item.icon || null}
+{item.icon}
src/packages/tabs/demos/taro/demo23.tsx (1)

鸿蒙系统适配问题已确认

根据代码分析发现:

  1. 多个 Tabs 相关的演示文件中都标注了"TODO:鸿蒙支持的不好"的注释
  2. 当前实现中的触摸事件处理主要依赖 onClick,在鸿蒙系统上可能存在兼容性问题
  3. 缺少针对鸿蒙系统的特定样式适配

建议:

  • 在 tabs.scss 中添加鸿蒙系统特定的样式适配
  • 优化触摸事件处理,考虑使用更通用的事件处理方式
  • 完善图标组件在鸿蒙系统上的显示支持
🔗 Analysis chain

Line range hint 1-48: 验证鸿蒙系统兼容性

由于该 PR 的主要目标是适配鸿蒙系统,建议:

  1. 添加鸿蒙系统特定的样式适配
  2. 验证触摸事件在鸿蒙系统上的表现
  3. 确保图标组件在鸿蒙系统上正常显示

Let me analyze the codebase further to verify the HarmonyOS compatibility concerns.


Let me check the HarmonyOS specific adaptations in more detail.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查是否存在鸿蒙系统特定的样式文件
fd -e scss -e css | xargs rg -l "harmony|hongmeng|鸿蒙"

# 检查是否有针对鸿蒙系统的条件判断
rg -l "harmony|hongmeng|鸿蒙" $(fd -e tsx -e ts)

Length of output: 69136


Script:

#!/bin/bash
# Check for HarmonyOS specific styles and adaptations in the tabs component
rg -l "harmony|鸿蒙" src/packages/tabs/

# Check for touch event handling adaptations
rg -A 5 "onClick|onTouch" src/packages/tabs/tabs.taro.tsx

# Check for icon component adaptations
rg -A 5 "icon|Icon" src/packages/tabs/tabs.taro.tsx

Length of output: 1376


Script:

#!/bin/bash
# Check the content of HarmonyOS related demo files
cat src/packages/tabs/demos/taro/demo14.tsx src/packages/tabs/demos/taro/demo12.tsx src/packages/tabs/demos/taro/demo16.tsx

# Check for any HarmonyOS specific styles
rg -A 5 "harmony|鸿蒙" src/packages/tabs/tabs.scss

# Check touch event handling in demo files
rg -A 5 "onClick|onTouch" src/packages/tabs/demos/taro/demo23.tsx

Length of output: 3598

src/packages/tabs/tabs.scss (1)

108-115: 完善激活状态下的样式继承

激活状态下的图标和文本样式得到了统一处理:

  1. 图标颜色继承自 $tabs-titles-item-active-color
  2. 文本样式包含了颜色和字重的继承

建议考虑添加鸿蒙特有的动效,提升用户体验。

.nut-tabs-titles-item-active {
  .nut-icon {
    color: $tabs-titles-item-active-color;
+   transition: color 0.3s ease;
  }

  .nut-tabs-titles-item-text {
    color: $tabs-titles-item-active-color;
    font-weight: $tabs-titles-item-active-font-weight;
+   transition: all 0.3s ease;
  }
}
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between b635275 and bee5920.

📒 Files selected for processing (50)
  • scripts/rn/copy-file.js (2 hunks)
  • scripts/rn/update-taro-entry.js (1 hunks)
  • src/config.json (2 hunks)
  • src/packages/tabs/demo.taro.tsx (3 hunks)
  • src/packages/tabs/demos/h5/demo1.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo10.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo11.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo13.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo14.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo15.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo16.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo17.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo18.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo19.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo2.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo20.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo21.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo22.tsx (2 hunks)
  • src/packages/tabs/demos/h5/demo23.tsx (3 hunks)
  • src/packages/tabs/demos/h5/demo3.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo4.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo5.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo6.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo7.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo8.tsx (1 hunks)
  • src/packages/tabs/demos/h5/demo9.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo1.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo10.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo11.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo12.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo13.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo14.tsx (2 hunks)
  • src/packages/tabs/demos/taro/demo15.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo16.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo17.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo18.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo19.tsx (2 hunks)
  • src/packages/tabs/demos/taro/demo2.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo20.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo21.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo22.tsx (2 hunks)
  • src/packages/tabs/demos/taro/demo23.tsx (2 hunks)
  • src/packages/tabs/demos/taro/demo3.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo4.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo5.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo6.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo7.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo8.tsx (1 hunks)
  • src/packages/tabs/demos/taro/demo9.tsx (1 hunks)
  • src/packages/tabs/tabs.scss (3 hunks)
✅ Files skipped from review due to trivial changes (1)
  • src/packages/tabs/demos/taro/demo12.tsx
🔇 Additional comments (36)
src/packages/tabs/demos/taro/demo20.tsx (1)

Line range hint 17-29: 验证嵌套标签页在鸿蒙系统上的交互体验

嵌套的标签页结构可能在触摸设备上造成操作困难,特别是在鸿蒙系统上需要确保良好的用户体验。

建议进行以下验证:

  1. 确认触摸区域大小是否符合鸿蒙系统的设计规范
  2. 验证嵌套切换是否流畅
  3. 测试在不同尺寸设备上的显示效果

考虑添加以下功能:

  1. 增加触摸反馈效果
  2. 优化切换动画
  3. 考虑在小屏设备上使用替代布局
src/packages/tabs/demos/taro/demo17.tsx (2)

3-3: 从 Taro 引入 Text 组件是正确的做法

在 Taro 项目中使用文本内容时,使用 Text 组件是推荐的最佳实践,这样可以确保跨平台的一致性。


6-7: 变量命名更改提高了代码可读性

tab4valuelist4 重命名为更通用的 tabvaluelist 是个好的改进,使代码更清晰易懂。

src/packages/tabs/demos/taro/demo1.tsx (1)

5-5: 变量重命名改进了代码清晰度

tab1value 重命名为 tabvalue 使代码更加简洁和统一。

Also applies to: 8-8, 10-10

src/packages/tabs/demos/taro/demo7.tsx (2)

5-5: 保持了与其他文件一致的命名规范

变量重命名保持了与其他演示文件的一致性,有助于代码维护。

Also applies to: 8-8, 10-10


12-12: 建议优化鸿蒙系统下的对齐方式

对于鸿蒙系统,建议:

  1. 验证 align="left" 是否符合鸿蒙设计规范
  2. 考虑添加鸿蒙特有的对齐方式
src/packages/tabs/demos/taro/demo4.tsx (1)

5-5: 命名更新保持一致性

状态变量的重命名与其他示例保持一致,提高了代码的可维护性。

Also applies to: 8-8, 10-10

src/packages/tabs/demos/taro/demo2.tsx (1)

5-5: 状态变量命名优化

变量重命名提高了代码的清晰度和一致性。但是考虑到此PR的目标是适配鸿蒙系统,建议:

  1. 验证 activeType="smile" 在鸿蒙系统上的兼容性
  2. 考虑添加鸿蒙系统特定的样式或行为适配

Also applies to: 8-8, 10-10

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

5-5: ⚠️ Potential issue

需要完善鸿蒙系统适配方案

虽然代码重构提高了一致性,但作为鸿蒙适配PR,以下几点建议需要考虑:

  1. 当前改动仅涉及变量重命名,未见具体的鸿蒙适配代码
  2. 建议添加:
    • 鸿蒙特有的交互行为
    • 符合鸿蒙设计规范的样式
    • 相关文档说明
  3. 建议补充演示文件,展示在鸿蒙系统上的具体表现

Also applies to: 8-8, 10-10

src/packages/tabs/demos/taro/demo6.tsx (1)

5-5: 状态变量命名优化

状态变量的重命名提高了代码的一致性,但建议:

  1. 考虑添加 HarmonyOS 特定的样式处理
  2. 验证 divider 样式在鸿蒙系统上的兼容性

建议添加以下测试用例:

+ // 添加鸿蒙系统特定的样式处理
+ const platformStyles = {
+   harmonyos: {
+     // 鸿蒙系统特定的样式
+   }
+ }

Also applies to: 8-8, 10-10

src/packages/tabs/demos/taro/demo8.tsx (1)

5-5: 卡片样式在鸿蒙系统的适配建议

对于卡片样式标签页,建议:

  1. 确保卡片样式在鸿蒙系统上的视觉表现符合系统设计规范
  2. 考虑添加 RTL(从右到左)布局支持
  3. 验证 align="left" 属性在不同系统下的一致性

Also applies to: 8-8, 11-11

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

5-5: 优化动画效果和交互模式

虽然变量命名规范化了,但建议进行以下改进:

  • 当前的smile动画效果是否符合鸿蒙的设计语言
  • 建议适配鸿蒙系统的手势操作
  • 考虑增加声明式动画支持

建议:

  1. 评估现有动画效果在鸿蒙系统上的表现
  2. 添加鸿蒙特有的交互模式
  3. 确保动画性能符合鸿蒙系统标准

运行以下脚本检查动画相关代码:

Also applies to: 9-9, 11-11

src/packages/tabs/demos/h5/demo5.tsx (1)

5-5: 验证鸿蒙系统按钮样式兼容性

当前改动仅涉及状态管理的重命名,建议:

  1. 确认按钮样式是否符合鸿蒙设计规范
  2. 考虑添加鸿蒙特有的交互效果

Also applies to: 9-9, 11-11

src/packages/tabs/demos/h5/demo6.tsx (1)

Line range hint 1-24: 整体改进建议

当前改动主要集中在状态变量的重命名,但作为鸿蒙适配的PR,还需要考虑:

  1. 缺少鸿蒙系统特定的适配代码
  2. 未见鸿蒙设计规范的对应实现
  3. 示例中未展示鸿蒙特有的交互方式
  4. 文档中缺少适配说明

建议:

  1. 补充鸿蒙系统特有的交互和样式
  2. 添加适配文档和示例说明
  3. 确保组件行为符合鸿蒙设计规范
src/packages/tabs/demos/h5/demo9.tsx (1)

5-5: 验证鸿蒙系统兼容性

代码变更保持了与其他示例的一致性,但需要注意以下几点:

  1. 建议验证 button 类型的标签页在鸿蒙系统上的显示效果
  2. 可能需要针对鸿蒙系统添加特定的样式适配

请验证以下几点:

  1. button 样式在鸿蒙系统的兼容性
  2. 交互响应是否符合鸿蒙系统的设计规范

Also applies to: 9-9, 13-13

src/packages/tabs/demos/taro/demo9.tsx (1)

5-5: 变量命名优化,提高代码一致性!

tab1value 重命名为 tabvalue 使代码更加清晰和统一,这是一个很好的改进。

Also applies to: 9-9, 12-12

src/packages/tabs/demos/taro/demo10.tsx (1)

5-5: 请补充鸿蒙系统适配的具体实现细节

虽然变量重命名改动合理,但是没有看到针对鸿蒙系统的具体适配代码。建议:

  1. 添加鸿蒙特有的交互方式
  2. 考虑鸿蒙系统的设计规范
  3. 补充相关文档说明

Also applies to: 9-9, 12-12

src/packages/tabs/demos/h5/demo16.tsx (1)

5-5: 状态变量命名优化

状态变量的重命名使代码更加简洁统一,同时保持了组件的原有功能。这种改进有助于提高代码的可维护性。

Also applies to: 9-9, 11-11

src/packages/tabs/demos/h5/demo14.tsx (1)

5-5: 命名统一化改进

状态变量的重命名与其他演示组件保持一致,并且保留了 autoHeight 等重要功能属性。代码结构清晰,类型定义完整。

Also applies to: 9-9, 12-12

src/packages/tabs/demos/taro/demo16.tsx (1)

4-4: ⚠️ Potential issue

需要详细说明鸿蒙系统的兼容性问题

TODO 注释表明该组件在鸿蒙系统上存在兼容性问题。建议:

  1. 具体说明在鸿蒙系统上遇到的问题
  2. 添加相关 issue 链接追踪问题
  3. 提供临时解决方案或使用限制说明
src/packages/tabs/demos/taro/demo18.tsx (2)

11-11: 样式值类型变更需要验证兼容性

将 style height 从字符串改为数字类型可能会影响渲染效果,建议:

  1. 确认在鸿蒙系统上的渲染效果
  2. 添加注释说明这个改动的原因

3-3: 建议说明使用 Text 组件的原因

引入 @tarojs/componentsText 组件可能与鸿蒙适配相关,建议:

  1. 说明为什么需要使用 Text 组件而不是直接使用文本
  2. 确认这个改动是否解决了某个特定的鸿蒙系统兼容性问题

Also applies to: 20-20

src/packages/tabs/demos/h5/demo15.tsx (1)

8-11: 异步加载行为需要在鸿蒙环境验证

使用 setTimeout 模拟异步加载可能在鸿蒙系统上有不同表现,建议:

  1. 验证在鸿蒙系统上的加载状态切换是否正常
  2. 考虑添加加载状态指示器
src/packages/tabs/demos/taro/demo19.tsx (1)

3-3: 使用 Text 组件包装文本内容以提高兼容性

使用 Text 组件包装文本内容是一个很好的改进,这样可以确保在鸿蒙系统上有更好的显示效果。

Also applies to: 21-21

src/packages/tabs/demos/taro/demo15.tsx (1)

24-24: 使用 Text 组件提升鸿蒙系统兼容性

正确使用了 Text 组件来包装文本内容,这对鸿蒙系统的适配很有帮助。

src/packages/tabs/demos/taro/demo22.tsx (1)

4-4: 需要明确说明鸿蒙系统的兼容性问题

TODO 注释提到鸿蒙系统对自定义变量支持不好,建议:

  1. 具体说明兼容性问题
  2. 提供临时解决方案
  3. 创建 issue 追踪此问题

需要我帮助创建一个详细的 issue 来追踪这个兼容性问题吗?

src/packages/tabs/demos/h5/demo21.tsx (1)

5-6: 状态变量命名优化

状态变量的重命名使代码更加清晰和统一,建议在相关文档中更新这些变更。

以下几点值得注意:

  1. 变量命名更加简洁,从 tab8value 改为 tabvalue
  2. 嵌套 Tabs 的状态变量采用了统一的命名模式
  3. 类型定义保持不变,确保了类型安全

Also applies to: 10-12, 18-20

src/packages/tabs/demos/h5/demo23.tsx (1)

6-7: 变量命名更改提升了代码一致性

tab7value 重命名为 tabvaluelist6 重命名为 list 使代码更加清晰和统一。

scripts/rn/copy-file.js (1)

33-33: 添加 tabpane 到子组件列表中是合适的!

将 tabpane 添加到 childAdaptedArray 中有助于正确处理 Tabs 组件的子组件适配。

scripts/rn/update-taro-entry.js (1)

38-38: 保持了与 copy-file.js 的一致性!

在两个脚本中同步添加 tabpane 确保了构建过程的一致性,这对于鸿蒙系统的适配是必要的。

src/packages/tabs/demo.taro.tsx (2)

43-43: 新增的翻译键值对完整且合理!

中英文翻译对应恰当,保持了良好的国际化支持。

Also applies to: 68-68


123-123: 请验证 Demo17 的实现

新增了滚动操作相关的展示,建议确认以下几点:

  1. Demo17 是否已实现对应的滚动操作功能
  2. 在鸿蒙系统上的滚动性能是否符合预期
src/packages/tabs/tabs.scss (2)

64-66: 优化默认状态下的图标和文本颜色一致性

图标和文本颜色统一使用 $tabs-titles-item-color 变量,确保了视觉表现的一致性,符合鸿蒙设计规范。

Also applies to: 75-75


129-132: 优化 smile 类型激活状态的图标颜色

确保了 smile 类型下图标颜色与其他激活状态保持一致。

src/config.json (2)

Line range hint 392-403: 版本升级和鸿蒙系统适配

Tabs相关组件升级到3.0.0版本,这与PR的鸿蒙系统适配目标相符。但建议补充以下内容:

  1. 在PR描述中说明版本升级的具体改动
  2. 提供在鸿蒙系统上的测试结果
✅ Verification successful

版本升级验证已完成

根据配置文件分析,大部分组件(包括 Tabs 和 TabPane)已经升级到 3.0.0 版本,这与鸿蒙系统适配的目标相符。目前仍有少数组件(如 Sticky、FixedNav、SideNavBar 等)保持在 2.0.0 版本,但这些组件与 Tabs 相关组件并无直接依赖关系。

建议:

  • 继续保持当前的版本升级策略,优先升级核心导航组件
  • 后续可以逐步完成其他组件的版本升级工作
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查Tabs相关组件的变更历史
git log -p --all --full-history -- "**/tabs/**" "**/tab-pane/**"

Length of output: 0


Script:

#!/bin/bash
# Search for Tabs and TabPane related files
fd -t f -e vue -e ts -e js "tab" "src"

# Search for version numbers in config.json
rg "\"version\":" "src/config.json" -A 5

Length of output: 18272


Line range hint 1-1180: 组件版本号不一致问题

发现部分组件仍然保持在2.0.0版本,而其他组件已更新至3.0.0版本。这种版本不一致可能会导致:

  1. 组件间的兼容性问题
  2. API接口的不一致性
  3. 用户使用时的困惑

建议:

  1. 统一将所有组件升级到3.0.0版本
  2. 如果有特殊原因需要保持某些组件在2.0.0版本,请在文档中说明原因

受影响的2.0.0版本组件包括:

  • Address
  • Calendar
  • Cascader
  • DatePicker
  • Form
  • Menu
  • NumberKeyboard
  • ShortPassword
  • Signature

src/packages/tabs/demos/taro/demo20.tsx Show resolved Hide resolved
src/packages/tabs/demos/taro/demo17.tsx Show resolved Hide resolved
src/packages/tabs/demos/h5/demo7.tsx Show resolved Hide resolved
src/packages/tabs/demos/h5/demo4.tsx Show resolved Hide resolved
src/packages/tabs/demos/h5/demo18.tsx Show resolved Hide resolved
src/packages/tabs/demos/h5/demo22.tsx Outdated Show resolved Hide resolved
src/packages/tabs/demos/taro/demo13.tsx Show resolved Hide resolved
src/packages/tabs/demos/taro/demo14.tsx Show resolved Hide resolved
src/packages/tabs/demos/taro/demo14.tsx Outdated Show resolved Hide resolved
src/packages/tabs/demos/taro/demo23.tsx Outdated Show resolved Hide resolved
src/packages/tabs/tabs.scss Show resolved Hide resolved
src/packages/tabs/tabs.scss Show resolved Hide resolved
@@ -93,14 +98,22 @@
font-size: 20px;
width: 100%;
height: 100%;
color: $color-primary;
}
}

&-active {
Copy link
Collaborator

Choose a reason for hiding this comment

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

鸿蒙下,tab中的内容没有滑过去的效果

src/packages/tabs/tabs.scss Show resolved Hide resolved
@@ -93,14 +98,22 @@
font-size: 20px;
width: 100%;
height: 100%;
color: $color-primary;
}
}

&-active {
Copy link
Collaborator

Choose a reason for hiding this comment

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

image harmony 粘性布局demo内容上移了。显示有问题

@@ -93,14 +98,22 @@
font-size: 20px;
width: 100%;
height: 100%;
color: $color-primary;
}
}

&-active {
Copy link
Collaborator

Choose a reason for hiding this comment

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

image harmony: 滑动切换demo高度异常,有多余留白

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

🧹 Outside diff range and nitpick comments (1)
src/config.json (1)

Line range hint 392-401: 版本升级和文档更新建议

TabPane 和 Tabs 组件都已升级到 3.0.0 版本,这与鸿蒙系统适配的目标一致。但是有以下几点建议:

  1. 组件描述中没有提及鸿蒙系统适配的相关信息
  2. 缺少对新版本特性的说明

建议在组件描述中添加以下内容:

  "desc": "常用于平级区域大块内容的的收纳和展现,支持内嵌标签形式和渲染循环数据形式",
+ "desc": "常用于平级区域大块内容的的收纳和展现,支持内嵌标签形式和渲染循环数据形式。支持鸿蒙系统。",

Also applies to: 403-412

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between b268d29 and facfb0c.

📒 Files selected for processing (1)
  • src/config.json (2 hunks)
🔇 Additional comments (1)
src/config.json (1)

Line range hint 392-412: 验证组件依赖关系

需要确认 Tabs 组件在鸿蒙系统上的所有依赖组件是否都已完成适配。

✅ Verification successful

Tabs 组件在鸿蒙系统的依赖关系已验证完成

根据代码分析,Tabs 组件的依赖关系如下:

  • 基础依赖:

    • 使用了 React 基础组件和 hooks
    • 使用了 classnames 工具库
    • 使用了 @nutui/icons-react 图标库中的 JoySmile 组件
    • 内部依赖了 TabPane 子组件
    • 使用了工具函数 raf、usePropsValue、useForceUpdate 等
  • Taro 版本额外依赖:

    • 使用了 @tarojs/components 中的 ScrollView、View 组件
    • 使用了 @tarojs/taro 的 API

以上依赖都是基础组件库和工具函数,不涉及复杂的业务逻辑组件依赖。同时,Tabs 组件提供了完整的 Taro 版本实现,支持在鸿蒙系统上运行。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查 Tabs 相关组件的依赖关系
rg -l "import.*from.*['\"]@/packages/tabs['\"]" 

Length of output: 53


Script:

#!/bin/bash
# 搜索 Tabs 组件的导入语句,使用更通用的模式
rg -l "from ['\"].*tabs['\"]"

# 搜索 Tabs 组件的依赖关系
ast-grep --pattern 'import { $_ } from "$_"' src/packages/tabs

# 检查 Tabs 组件源码中的依赖
fd tabs -t f src/packages

Length of output: 359


Script:

#!/bin/bash
# 检查 Tabs 组件的具体实现和依赖
cat src/packages/tabs/tabs.tsx

# 检查 Taro 版本的实现和依赖
cat src/packages/tabs/tabs.taro.tsx

# 检查级联选择器中对 Tabs 的使用
cat src/packages/cascader/cascader.tsx

Length of output: 31281

@Alex-huxiyang
Copy link
Collaborator

image 这个demo嵌套布局的tab背景不太一致

overflow-x: auto;
overflow-y: hidden;
}

&-item {
Copy link
Collaborator

Choose a reason for hiding this comment

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

image 鸿蒙的smile模式距离比其他端要小

src/packages/tabs/tabs.scss Show resolved Hide resolved
@xiaoyatong
Copy link
Collaborator Author

fixed了几个,有两个无法支持,已在鸿蒙下去除;渐变背景色已提给taro。

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

🧹 Outside diff range and nitpick comments (4)
src/packages/tabs/demo.taro.tsx (2)

30-30: 国际化文案需要保持一致性

英文翻译 "A Large Number Of Scrolling Operations" 在 title4title4_1 中完全相同,建议区分它们以更好地反映中文版本的差异。

建议修改英文翻译:

-      title4_1: 'A Large Number Of Scrolling Operations',
+      title4_1: 'A Large Number Of Scrolling Operations 2',

Also applies to: 44-44, 69-69


114-121: 建议添加注释说明功能限制原因

当前代码在鸿蒙系统下隐藏了滑动切换和粘性布局的演示,建议添加注释说明不支持的具体原因,以便其他开发者理解。

+        {/* 由于鸿蒙系统限制,暂不支持滑动切换和粘性布局功能 */}
         {harmony() ? null : (
           <>
             <View className="h2">{translated.title14}</View>
             <Demo12 />
             <View className="h2">{translated.title10}</View>
             <Demo13 />
           </>
         )}
src/packages/tabs/tabs.scss (2)

8-10: 优化了水平布局和滚动行为

  1. 新增的水平布局类提供了更清晰的结构
  2. 修改了溢出行为,支持水平滚动,提升了用户体验

建议考虑添加滚动条样式的渐变效果,以提供更好的视觉反馈。

 .nut-tabs-titles {
   overflow-x: auto;
   overflow-y: hidden;
+  /* 添加滚动条渐变效果 */
+  background: linear-gradient(to right, $tabs-titles-background-color 30%, rgba(255, 255, 255, 0)),
+              linear-gradient(to left, $tabs-titles-background-color 30%, rgba(255, 255, 255, 0)) 100% 0;
+  background-size: 40px 100%, 40px 100%;
+  background-repeat: no-repeat;
 }

Also applies to: 17-18


143-150: 简化了Simple模式的样式结构

重构后的代码更加清晰,便于维护。建议考虑添加过渡动画以提升用户体验。

 .nut-tabs-titles-simple {
   .nut-tabs-titles-item {
     &-active {
       .nut-tabs-titles-item-text,
       .nut-icon {
         color: $color-title;
         font-size: $tabs-titles-item-active-font-size;
+        transition: all 0.3s ease;
       }
     }
   }
 }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between f99eb59 and 89226ba.

📒 Files selected for processing (3)
  • src/packages/tabs/demo.taro.tsx (4 hunks)
  • src/packages/tabs/tabs.scss (9 hunks)
  • src/packages/tabs/tabs.taro.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/packages/tabs/tabs.taro.tsx
🔇 Additional comments (4)
src/packages/tabs/demo.taro.tsx (1)

129-130: 代码结构合理

新增的滚动操作演示部分遵循了现有的代码结构,保持了良好的一致性。

src/packages/tabs/tabs.scss (3)

63-65: 改进了图标和文字的颜色一致性

统一处理了图标和文字在不同状态下的颜色,包括:

  1. 默认状态
  2. 激活状态
  3. 禁用状态

这样的改进提高了视觉一致性。

Also applies to: 103-110, 133-138


124-127: 优化了微笑指示器的视觉效果

在激活状态下正确设置了图标颜色,使其与整体主题保持一致。


334-344: 完善的RTL支持

新增了全面的RTL支持,包括:

  1. 标题项的对齐方式
  2. 指示器的位置
  3. 分隔线的位置

代码结构清晰,覆盖了各种布局场景。

@oasis-cloud
Copy link
Collaborator

image 自动高度切换 tab 选项卡后,内容不见了。

@oasis-cloud
Copy link
Collaborator

image 微笑曲线位置不对。

@oasis-cloud
Copy link
Collaborator

image 背景色不一样。

@xiaoyatong
Copy link
Collaborator Author

image 微笑曲线位置不对。

已知问题,taro跟进中

@xiaoyatong
Copy link
Collaborator Author

image 背景色不一样。

已知问题,taro跟进

@oasis-cloud oasis-cloud merged commit cbfc2a9 into jdf2e:feat_v3.x Dec 10, 2024
6 checks passed
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.

3 participants