-
Notifications
You must be signed in to change notification settings - Fork 266
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
feat(Tabs): tabs 适配鸿蒙 #2820
Conversation
Walkthrough本次更改涉及多个文件,主要集中在组件的状态管理、版本更新和样式改进上。 Changes
Possibly related PRs
Suggested reviewers
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? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Codecov ReportAll modified and coverable lines are covered by tests ✅
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. |
There was a problem hiding this 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
: 建议优化类型声明和事件处理虽然代码功能正确,但可以进一步改进:
- 为
onChange
的参数添加明确的类型声明- 考虑使用更简洁的箭头函数写法
建议如下修改:
- 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
: 建议添加鸿蒙系统特定的适配当前的实现缺少针对鸿蒙系统的特定适配。建议:
- 添加鸿蒙系统特有的交互方式
- 考虑适配鸿蒙系统的设计规范
- 增加相关文档说明
src/packages/tabs/demos/taro/demo4.tsx (1)
Line range hint
12-17
: 建议适配鸿蒙系统的卡片样式当前的卡片样式可能需要调整:
- 建议参考鸿蒙设计规范调整
card
类型的视觉效果- 考虑添加鸿蒙特有的动画效果
- 适配鸿蒙系统的触控反馈
src/packages/tabs/demos/taro/demo5.tsx (1)
5-5
: 建议增加鸿蒙系统按钮样式适配代码变更保持了与其他文件的一致性,但建议:
- 为鸿蒙系统添加特定的按钮样式
- 确保按钮交互符合鸿蒙系统的设计规范
Also applies to: 8-8, 10-10
src/packages/tabs/demos/h5/demo1.tsx (1)
5-5
: 建议增加鸿蒙系统演示用例当前的 H5 演示代码需要以下改进:
- 建议添加鸿蒙系统特定的演示用例,展示适配效果
- 补充文档说明组件在不同平台的差异性
Also applies to: 9-9, 11-11
src/packages/tabs/demos/taro/demo8.tsx (1)
Line range hint
1-1
: 缺少明确的鸿蒙系统适配实现根据 PR 描述,本次改动的主要目标是适配鸿蒙系统,但目前的改动主要集中在状态管理的重构上。建议:
- 明确列出鸿蒙系统适配需要解决的具体问题
- 添加鸿蒙系统特定的样式和交互处理
- 补充相关文档和测试用例
src/packages/tabs/demos/h5/demo3.tsx (1)
5-5
: 状态变量命名优化变量重命名提高了代码的可读性和一致性,但建议考虑以下几点:
- 考虑使用更具描述性的命名,比如
activeTabIndex
或selectedTab
- 为了适配鸿蒙系统,可能需要添加特定的属性或处理逻辑
建议的重构方案:
-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
: 建议完善文档和示例说明代码变更保持了一致性,但建议:
- 添加对鸿蒙系统特定功能的说明文档
- 在示例中展示鸿蒙系统特有的交互方式
- 考虑添加适配说明和注意事项
建议在文档中补充以下内容:
- 鸿蒙系统适配指南
- 与其他平台的差异说明
- 特定属性的使用说明
Also applies to: 9-9, 11-11
src/packages/tabs/demos/h5/demo8.tsx (1)
5-5
: 状态变量命名优化状态变量的重命名提高了代码的一致性和可维护性。但是建议考虑以下几点:
- 可以考虑添加类型注释来提高代码的可读性
- 建议在组件内添加相关注释,说明状态变量的用途
建议改进如下:
- 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
: 完善示例文档和注释代码变更与其他示例保持一致,建议进行以下改进:
- 添加示例说明文档,特别是关于鸿蒙系统的适配说明
- 补充不同样式类型(如 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
建议完善标签页组件的鸿蒙系统适配
经过验证,目前的情况如下:
- 标签页组件(Tabs)缺少鸿蒙系统特有的样式适配,而其他组件(如Button)已经包含了鸿蒙特定的样式条件编译代码
- 现有的测试用例主要覆盖了基础功能,但未包含平台特定的测试场景
- 缺少鸿蒙平台相关的使用文档说明
建议进行以下改进:
- 参考Button组件的实现,在tabs.scss中添加鸿蒙平台特定的样式适配
- 补充鸿蒙系统下的交互行为测试用例
- 在组件文档中添加鸿蒙平台的使用说明和注意事项
🔗 Analysis chain
Line range hint
1-24
: 整体建议针对标签页组件的鸿蒙适配,建议补充以下内容:
- 添加鸿蒙系统特有的交互和样式适配
- 完善示例文档,包括兼容性说明
- 补充自动化测试用例
建议执行以下验证:
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
: 建议增强跨平台兼容性处理作为鸿蒙系统适配的一部分,建议:
- 添加鸿蒙系统特定的样式和交互处理
- 考虑在组件中添加平台判断逻辑
- 补充鸿蒙系统相关的文档说明
建议添加平台特定代码:
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
: 缺少鸿蒙系统适配的测试用例建议添加以下内容:
- 鸿蒙系统特定的交互测试用例
- 不同屏幕尺寸下的展示效果验证
- 性能测试用例
🏁 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
: 变量命名更改建议添加相关注释为了保持代码可维护性,建议:
- 在变量重命名时添加注释说明重命名的原因
- 确保所有相关的 demo 文件都保持一致的命名规范
Also applies to: 10-10, 12-12
src/packages/tabs/demos/h5/demo15.tsx (1)
Line range hint
21-25
: 建议优化数组生成和渲染逻辑当前的实现可以进行以下优化:
- 考虑使用
useMemo
缓存渲染结果- 添加空数组状态的处理
- {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
: 建议优化状态管理和初始化逻辑当前的状态管理和初始化逻辑可以进行以下优化:
- 使用更具描述性的变量名
- 考虑使用常量定义延迟时间
-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
: 代码结构清晰,命名规范统一代码变更符合以下要求:
- 状态变量命名简化且统一
- 保持了良好的代码结构
- 正确处理了垂直和水平方向的标签页切换
建议:
- 考虑添加适当的代码注释,说明不同方向组合的用途
- 可以在示例中添加更多样式来展示实际应用场景
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)
鸿蒙系统适配问题已确认
根据代码分析发现:
- 多个 Tabs 相关的演示文件中都标注了"TODO:鸿蒙支持的不好"的注释
- 当前实现中的触摸事件处理主要依赖 onClick,在鸿蒙系统上可能存在兼容性问题
- 缺少针对鸿蒙系统的特定样式适配
建议:
- 在 tabs.scss 中添加鸿蒙系统特定的样式适配
- 优化触摸事件处理,考虑使用更通用的事件处理方式
- 完善图标组件在鸿蒙系统上的显示支持
🔗 Analysis chain
Line range hint
1-48
: 验证鸿蒙系统兼容性由于该 PR 的主要目标是适配鸿蒙系统,建议:
- 添加鸿蒙系统特定的样式适配
- 验证触摸事件在鸿蒙系统上的表现
- 确保图标组件在鸿蒙系统上正常显示
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.tsxLength 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.tsxLength of output: 3598
src/packages/tabs/tabs.scss (1)
108-115
: 完善激活状态下的样式继承激活状态下的图标和文本样式得到了统一处理:
- 图标颜色继承自
$tabs-titles-item-active-color
- 文本样式包含了颜色和字重的继承
建议考虑添加鸿蒙特有的动效,提升用户体验。
.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
📒 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
: 验证嵌套标签页在鸿蒙系统上的交互体验
嵌套的标签页结构可能在触摸设备上造成操作困难,特别是在鸿蒙系统上需要确保良好的用户体验。
建议进行以下验证:
- 确认触摸区域大小是否符合鸿蒙系统的设计规范
- 验证嵌套切换是否流畅
- 测试在不同尺寸设备上的显示效果
考虑添加以下功能:
- 增加触摸反馈效果
- 优化切换动画
- 考虑在小屏设备上使用替代布局
src/packages/tabs/demos/taro/demo17.tsx (2)
3-3
: 从 Taro 引入 Text 组件是正确的做法
在 Taro 项目中使用文本内容时,使用 Text
组件是推荐的最佳实践,这样可以确保跨平台的一致性。
6-7
: 变量命名更改提高了代码可读性
将 tab4value
和 list4
重命名为更通用的 tabvalue
和 list
是个好的改进,使代码更清晰易懂。
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
: 建议优化鸿蒙系统下的对齐方式
对于鸿蒙系统,建议:
- 验证
align="left"
是否符合鸿蒙设计规范 - 考虑添加鸿蒙特有的对齐方式
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的目标是适配鸿蒙系统,建议:
- 验证
activeType="smile"
在鸿蒙系统上的兼容性 - 考虑添加鸿蒙系统特定的样式或行为适配
Also applies to: 8-8, 10-10
src/packages/tabs/demos/taro/demo3.tsx (1)
5-5
:
需要完善鸿蒙系统适配方案
虽然代码重构提高了一致性,但作为鸿蒙适配PR,以下几点建议需要考虑:
- 当前改动仅涉及变量重命名,未见具体的鸿蒙适配代码
- 建议添加:
- 鸿蒙特有的交互行为
- 符合鸿蒙设计规范的样式
- 相关文档说明
- 建议补充演示文件,展示在鸿蒙系统上的具体表现
Also applies to: 8-8, 10-10
src/packages/tabs/demos/taro/demo6.tsx (1)
5-5
: 状态变量命名优化
状态变量的重命名提高了代码的一致性,但建议:
- 考虑添加 HarmonyOS 特定的样式处理
- 验证 divider 样式在鸿蒙系统上的兼容性
建议添加以下测试用例:
+ // 添加鸿蒙系统特定的样式处理
+ const platformStyles = {
+ harmonyos: {
+ // 鸿蒙系统特定的样式
+ }
+ }
Also applies to: 8-8, 10-10
src/packages/tabs/demos/taro/demo8.tsx (1)
5-5
: 卡片样式在鸿蒙系统的适配建议
对于卡片样式标签页,建议:
- 确保卡片样式在鸿蒙系统上的视觉表现符合系统设计规范
- 考虑添加 RTL(从右到左)布局支持
- 验证
align="left"
属性在不同系统下的一致性
Also applies to: 8-8, 11-11
src/packages/tabs/demos/h5/demo2.tsx (1)
5-5
: 优化动画效果和交互模式
虽然变量命名规范化了,但建议进行以下改进:
- 当前的smile动画效果是否符合鸿蒙的设计语言
- 建议适配鸿蒙系统的手势操作
- 考虑增加声明式动画支持
建议:
- 评估现有动画效果在鸿蒙系统上的表现
- 添加鸿蒙特有的交互模式
- 确保动画性能符合鸿蒙系统标准
运行以下脚本检查动画相关代码:
Also applies to: 9-9, 11-11
src/packages/tabs/demos/h5/demo5.tsx (1)
5-5
: 验证鸿蒙系统按钮样式兼容性
当前改动仅涉及状态管理的重命名,建议:
- 确认按钮样式是否符合鸿蒙设计规范
- 考虑添加鸿蒙特有的交互效果
Also applies to: 9-9, 11-11
src/packages/tabs/demos/h5/demo6.tsx (1)
Line range hint 1-24
: 整体改进建议
当前改动主要集中在状态变量的重命名,但作为鸿蒙适配的PR,还需要考虑:
- 缺少鸿蒙系统特定的适配代码
- 未见鸿蒙设计规范的对应实现
- 示例中未展示鸿蒙特有的交互方式
- 文档中缺少适配说明
建议:
- 补充鸿蒙系统特有的交互和样式
- 添加适配文档和示例说明
- 确保组件行为符合鸿蒙设计规范
src/packages/tabs/demos/h5/demo9.tsx (1)
5-5
: 验证鸿蒙系统兼容性
代码变更保持了与其他示例的一致性,但需要注意以下几点:
- 建议验证 button 类型的标签页在鸿蒙系统上的显示效果
- 可能需要针对鸿蒙系统添加特定的样式适配
请验证以下几点:
- button 样式在鸿蒙系统的兼容性
- 交互响应是否符合鸿蒙系统的设计规范
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
: 请补充鸿蒙系统适配的具体实现细节
虽然变量重命名改动合理,但是没有看到针对鸿蒙系统的具体适配代码。建议:
- 添加鸿蒙特有的交互方式
- 考虑鸿蒙系统的设计规范
- 补充相关文档说明
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
:
需要详细说明鸿蒙系统的兼容性问题
TODO 注释表明该组件在鸿蒙系统上存在兼容性问题。建议:
- 具体说明在鸿蒙系统上遇到的问题
- 添加相关 issue 链接追踪问题
- 提供临时解决方案或使用限制说明
src/packages/tabs/demos/taro/demo18.tsx (2)
11-11
: 样式值类型变更需要验证兼容性
将 style height 从字符串改为数字类型可能会影响渲染效果,建议:
- 确认在鸿蒙系统上的渲染效果
- 添加注释说明这个改动的原因
3-3
: 建议说明使用 Text 组件的原因
引入 @tarojs/components
的 Text
组件可能与鸿蒙适配相关,建议:
- 说明为什么需要使用
Text
组件而不是直接使用文本 - 确认这个改动是否解决了某个特定的鸿蒙系统兼容性问题
Also applies to: 20-20
src/packages/tabs/demos/h5/demo15.tsx (1)
8-11
: 异步加载行为需要在鸿蒙环境验证
使用 setTimeout
模拟异步加载可能在鸿蒙系统上有不同表现,建议:
- 验证在鸿蒙系统上的加载状态切换是否正常
- 考虑添加加载状态指示器
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 注释提到鸿蒙系统对自定义变量支持不好,建议:
- 具体说明兼容性问题
- 提供临时解决方案
- 创建 issue 追踪此问题
需要我帮助创建一个详细的 issue 来追踪这个兼容性问题吗?
src/packages/tabs/demos/h5/demo21.tsx (1)
5-6
: 状态变量命名优化
状态变量的重命名使代码更加清晰和统一,建议在相关文档中更新这些变更。
以下几点值得注意:
- 变量命名更加简洁,从
tab8value
改为tabvalue
- 嵌套 Tabs 的状态变量采用了统一的命名模式
- 类型定义保持不变,确保了类型安全
Also applies to: 10-12, 18-20
src/packages/tabs/demos/h5/demo23.tsx (1)
6-7
: 变量命名更改提升了代码一致性
将 tab7value
重命名为 tabvalue
,list6
重命名为 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 的实现
新增了滚动操作相关的展示,建议确认以下几点:
- Demo17 是否已实现对应的滚动操作功能
- 在鸿蒙系统上的滚动性能是否符合预期
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的鸿蒙系统适配目标相符。但建议补充以下内容:
- 在PR描述中说明版本升级的具体改动
- 提供在鸿蒙系统上的测试结果
✅ 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版本。这种版本不一致可能会导致:
- 组件间的兼容性问题
- API接口的不一致性
- 用户使用时的困惑
建议:
- 统一将所有组件升级到3.0.0版本
- 如果有特殊原因需要保持某些组件在2.0.0版本,请在文档中说明原因
受影响的2.0.0版本组件包括:
- Address
- Calendar
- Cascader
- DatePicker
- Form
- Menu
- NumberKeyboard
- ShortPassword
- Signature
等
@@ -93,14 +98,22 @@ | |||
font-size: 20px; | |||
width: 100%; | |||
height: 100%; | |||
color: $color-primary; | |||
} | |||
} | |||
|
|||
&-active { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
鸿蒙下,tab中的内容没有滑过去的效果
@@ -93,14 +98,22 @@ | |||
font-size: 20px; | |||
width: 100%; | |||
height: 100%; | |||
color: $color-primary; | |||
} | |||
} | |||
|
|||
&-active { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@@ -93,14 +98,22 @@ | |||
font-size: 20px; | |||
width: 100%; | |||
height: 100%; | |||
color: $color-primary; | |||
} | |||
} | |||
|
|||
&-active { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this 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 版本,这与鸿蒙系统适配的目标一致。但是有以下几点建议:
- 组件描述中没有提及鸿蒙系统适配的相关信息
- 缺少对新版本特性的说明
建议在组件描述中添加以下内容:
"desc": "常用于平级区域大块内容的的收纳和展现,支持内嵌标签形式和渲染循环数据形式", + "desc": "常用于平级区域大块内容的的收纳和展现,支持内嵌标签形式和渲染循环数据形式。支持鸿蒙系统。",
Also applies to: 403-412
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 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
overflow-x: auto; | ||
overflow-y: hidden; | ||
} | ||
|
||
&-item { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed了几个,有两个无法支持,已在鸿蒙下去除;渐变背景色已提给taro。 |
There was a problem hiding this 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" 在
title4
和title4_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
: 优化了水平布局和滚动行为
- 新增的水平布局类提供了更清晰的结构
- 修改了溢出行为,支持水平滚动,提升了用户体验
建议考虑添加滚动条样式的渐变效果,以提供更好的视觉反馈。
.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
📒 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
: 改进了图标和文字的颜色一致性
统一处理了图标和文字在不同状态下的颜色,包括:
- 默认状态
- 激活状态
- 禁用状态
这样的改进提高了视觉一致性。
Also applies to: 103-110, 133-138
124-127
: 优化了微笑指示器的视觉效果
在激活状态下正确设置了图标颜色,使其与整体主题保持一致。
334-344
: 完善的RTL支持
新增了全面的RTL支持,包括:
- 标题项的对齐方式
- 指示器的位置
- 分隔线的位置
代码结构清晰,覆盖了各种布局场景。
🤔 这个变动的性质是?
🔗 相关 Issue
💡 需求背景和解决方案
☑️ 请求合并前的自查清单
Summary by CodeRabbit
版本更新说明
新功能
CalendarCard
,Input
,SearchBar
等)的支持,版本更新至3.0.0
。tabpane
作为新的子组件,增强了组件识别能力。样式改进
文档更新
title4_1
,确保多语言支持的准确性。重构