-
Notifications
You must be signed in to change notification settings - Fork 267
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
refactor: remove special handling for rntaro's environment configuration and component #2934
Conversation
Warning There were issues while running some tools. Please review the errors and either fix the tool’s configuration or disable the tool if it’s a critical failure. 🔧 eslint
packages/nutui-taro-demo/babel.config.jsOops! Something went wrong! :( ESLint: 8.57.1 ESLint couldn't find the config "taro/react" to extend from. Please check that the name of the config is correct. The config "taro/react" was referenced from the config file in "/packages/nutui-taro-demo/.eslintrc". If you still have problems, please stop by https://eslint.org/chat/help to chat with the team. 概述演练这个拉取请求主要涉及移除 React Native (RN) 相关的代码和配置,并简化了多平台(特别是鸿蒙)的兼容性处理。主要变更包括删除 变更
建议的标签
建议的审阅者
相关诗句
可能相关的 PR
Finishing Touches
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 #2934 +/- ##
==========================================
Coverage 85.58% 85.58%
==========================================
Files 277 277
Lines 18185 18185
Branches 2763 2763
==========================================
Hits 15563 15563
Misses 2617 2617
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: 1
🔭 Outside diff range comments (3)
src/packages/avatar/demos/taro/demo5.tsx (1)
Line range hint
10-19
: 需要清理注释代码并完善条件渲染的文档存在以下问题:
- 文件中包含已注释的 Badge 相关代码
- 缺少对条件渲染逻辑的说明
建议:
- 删除所有注释掉的代码
- 添加注释说明在 harmony 平台下不渲染的原因
- {harmony() ? null : ( - <> - {/* <Badge value="8"> */} - <Avatar icon={<User />} shape="square" /> - {/* </Badge> */} - {/* <Badge dot> */} - <Avatar icon={<User />} shape="square" /> - {/* </Badge> */} - </> - )} + {/* Harmony 平台不支持此类头像展示方式 */} + {harmony() ? null : ( + <> + <Avatar icon={<User />} shape="square" /> + <Avatar icon={<User />} shape="square" /> + </> + )}src/packages/range/demos/taro/demo6.tsx (1)
Line range hint
34-42
: 清理未使用的代码建议移除被注释的 Toast 相关代码,因为这些代码目前未被使用,且保留它们可能会造成混淆。同时也应该移除未使用的
show
和msg
状态变量。- const [show, setShow] = useState(false) - const [msg, setMsg] = useState('') - const showToast = (msg: string) => { - setMsg(msg) - setShow(true) - } + const showToast = (val: string) => { + console.log('Range value:', val) + } - {/* <Toast - type="text" - visible={show} - content={msg} - onClose={() => { - setShow(false) - }} - /> */}src/packages/toast/demo.taro.tsx (1)
需要确认 React Native 平台的处理方式
代码注释表明 RN 和鸿蒙都不支持
break-all
特性,但当前修改仅保留了鸿蒙平台的处理。建议:
- 确认 React Native 平台是否仍需要特殊处理
- 如果需要,建议恢复对 RN 平台的处理逻辑
- 如果不需要,建议更新相关注释以避免混淆
🔗 Analysis chain
Line range hint
49-54
: 优化了条件渲染逻辑使用
harmony()
替代harmonyAndRn()
,保留了对不支持break-all
特性平台的处理。建议验证此更改是否完整覆盖了所有需要特殊处理的平台:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查是否还有其他使用 break-all 的组件需要类似处理 rg "break-all" src/packages/Length of output: 1567
Script:
#!/bin/bash # Check for RN-specific files and conditions rg -i "react.?native|\.rn\." src/packages/Length of output: 44
Script:
#!/bin/bash # Search for platform detection utilities and their usage rg -A 3 "isRN|platform|harmony" src/packages/utils/Length of output: 113
Script:
#!/bin/bash # Search for platform detection in the entire src directory rg -A 3 "isRN|platform|harmony" src/Length of output: 50267
🧹 Nitpick comments (21)
src/packages/progress/demos/taro/demo2.tsx (1)
3-3
: 建议优化平台特定样式的处理方式目前的实现方式存在以下问题:
- 直接在组件中硬编码平台特定的颜色值
- 条件判断逻辑重复
建议:
- 将平台特定的样式配置抽离到主题配置中
- 创建一个统一的样式处理函数
+import { getThemeStyle } from '@/utils/theme' <Progress percent={30} - color={harmony() ? '#FF0F23' : 'var(--nutui-color-primary)'} - background={harmony() ? '#FFEAE8' : 'var(--nutui-brand-1)'} + {...getThemeStyle('progress')} strokeWidth="15" />Also applies to: 10-11
src/packages/avatar/demos/taro/demo4.tsx (1)
4-4
: 建议提取样式常量为了提高代码的可维护性,建议将颜色值提取为常量:
+const COLORS = { + harmony: { + primary: '#ff0f23', + background: '#ffebf1' + }, + default: { + primary: 'var(--nutui-color-primary)', + background: 'var(--nutui-color-primary-light-pressed)' + } +} -background={`${harmony() ? '#ff0f23' : 'var(--nutui-color-primary)'}`} +background={harmony() ? COLORS.harmony.primary : COLORS.default.primary} -color={`${harmony() ? '#ff0f23' : 'var(--nutui-color-primary)'}`} +color={harmony() ? COLORS.harmony.primary : COLORS.default.primary} -background={`${harmony() ? '#ffebf1' : 'var(--nutui-color-primary-light-pressed)'}`} +background={harmony() ? COLORS.harmony.background : COLORS.default.background}Also applies to: 11-11, 15-16
src/packages/range/demos/taro/demo2.tsx (1)
4-4
: 建议提取共享样式逻辑这个样式计算逻辑在多个 demo 文件中重复出现。建议将其提取为一个共享的 hook 或工具函数:
+// src/utils/style-helpers.ts +export const useRangeCellStyle = () => { + return useMemo(() => { + return harmony() + ? { + paddingTop: pxTransform(40), + paddingBottom: pxTransform(40), + paddingLeft: pxTransform(18), + paddingRight: pxTransform(18), + } + : { + padding: '40px 18px', + } + }, []) +} -const cellStyle = useMemo(() => { - return harmony() - ? { - paddingTop: pxTransform(40), - paddingBottom: pxTransform(40), - paddingLeft: pxTransform(18), - paddingRight: pxTransform(18), - } - : { - padding: '40px 18px', - } -}, []) +const cellStyle = useRangeCellStyle()Also applies to: 8-17
src/packages/hoverbutton/demos/taro/demo3.tsx (1)
8-8
: 底部导航栏条件渲染逻辑更新平台检测已从
harmonyAndRn
更新为harmony
,保持了相同的条件渲染逻辑。这个改动符合代码库的重构方向。建议添加注释说明在哪些平台场景下不显示底部导航栏,以提高代码可维护性。
- {harmony() ? null : ( + {/* 在鸿蒙系统下不显示底部导航栏 */} + {harmony() ? null : (Also applies to: 14-14
src/packages/hoverbutton/demos/taro/demo4.tsx (1)
8-8
: 样式定位优化使用
pxTransform
进行单位转换,并通过fixed
定位实现了底部固定效果。样式属性的设置合理且完整。建议考虑将这些固定样式抽取为一个独立的样式对象或组件,以提高代码复用性。
+const bottomLayerStyle = { + position: 'fixed', + width: '100%', + left: 0, + bottom: 0, + backgroundColor: 'rgba(0, 0, 0, 0.5)', +} <View - style={{ - position: 'fixed', - width: '100%', - left: 0, - bottom: 0, - backgroundColor: 'rgba(0, 0, 0, 0.5)', - }} + style={bottomLayerStyle} >Also applies to: 17-22
src/packages/range/demos/taro/demo7.tsx (2)
5-5
: 更新文档建议平台检测逻辑的简化是合理的,但建议:
- 更新组件文档,明确说明各平台的支持情况
- 在 CHANGELOG 中记录这个破坏性变更
Also applies to: 9-9
5-9
: 重构建议这组改动统一删除了 React Native 的特殊处理,使代码更加简洁。建议:
- 添加迁移指南,帮助依赖原
harmonyAndRn
的项目进行升级- 确保在 CI 流程中包含跨平台测试
- 考虑添加 TypeScript 类型测试,确保平台相关的类型定义正确
src/packages/avatar/demos/taro/demo6.tsx (1)
4-4
: 成功统一平台检测逻辑!已将
harmonyAndRn
替换为harmony
,维持了原有的样式效果。建议优化: 考虑将重复的样式逻辑提取为常量或辅助函数,以提高代码的可维护性。
import { harmony } from '@/utils/platform-taro' + +const getAvatarStyles = () => ({ + color: harmony() ? '#ff0f23' : 'var(--nutui-color-primary)', + background: harmony() ? '#ffd6e1' : 'var(--nutui-brand-2)', +}) const Demo6 = () => { + const avatarStyles = getAvatarStyles() return ( <> <Cell> <Avatar.Group gap="-4"> {/* ... */} - <Avatar - color={`${harmony() ? '#ff0f23' : 'var(--nutui-color-primary)'}`} - background={`${harmony() ? '#ffd6e1' : 'var(--nutui-brand-2)'}`} - > + <Avatar {...avatarStyles}> U </Avatar> </Avatar.Group> </Cell> <Cell> <Avatar.Group max="3" maxColor="#fff" maxBackground="#498ff2"> {/* ... */} - <Avatar - color={`${harmony() ? '#ff0f23' : 'var(--nutui-color-primary)'}`} - background={`${harmony() ? '#ffd6e1' : 'var(--nutui-brand-2)'}`} - > + <Avatar {...avatarStyles}> U </Avatar> {/* ... */} </Avatar.Group> </Cell> </> ) }Also applies to: 14-15, 26-27
src/packages/range/demos/taro/demo1.tsx (1)
5-5
: 平台特定样式逻辑优化样式逻辑简化后仍然保持了正确的平台特定行为。useMemo的使用确保了样式计算的性能优化。
建议考虑将这些平台特定的样式抽取到一个共享的样式工具函数中,以提高代码的可重用性。
Also applies to: 9-18
src/packages/swipe/demos/taro/demo9.tsx (1)
5-5
: InputNumber组件条件渲染逻辑优化平台检测逻辑简化后,InputNumber组件的条件渲染保持了正确的行为。
建议添加注释说明为什么InputNumber组件在harmony平台上不可用,以便其他开发者理解这个限制。
Also applies to: 44-44
src/packages/pulltorefresh/demo.taro.tsx (2)
10-10
: 下拉刷新禁用演示的平台兼容性更新平台检测逻辑简化后,禁用演示(Demo4)的条件渲染逻辑保持正确。
建议:
- 添加注释说明在harmony平台上不显示禁用演示的原因
- 考虑将平台特定的条件判断逻辑移至配置文件中统一管理
Also applies to: 43-48
Line range hint
1-1
: 建议:优化平台特性管理架构考虑创建一个集中的平台特性配置系统:
- 创建统一的平台特性配置文件,用于管理各个组件在不同平台上的行为和限制
- 实现特性开关机制,便于管理组件在不同平台的可用性
- 添加平台兼容性文档,清晰说明各个组件的平台支持情况
这样可以:
- 提高代码可维护性
- 简化平台检测逻辑
- 便于新功能的平台兼容性管理
src/packages/indicator/demos/taro/demo2.tsx (1)
5-5
: 重构了平台特定样式逻辑
- 更新了平台检测方法,使用
harmony()
替代harmonyAndRn()
- 保留了针对不同平台的样式差异处理
建议考虑以下优化:
- 将样式对象抽取为独立的常量,提高代码可维护性
- 考虑使用样式主题系统统一管理平台差异
+const baseStyle = { + display: 'inline-block', + textAlign: 'center', + color: '#FFFFFF', + backgroundColor: 'var(--nutui-color-primary)', +} + +const webStyle = { + ...baseStyle, + width: '14px', + height: '14px', + // ... 其他 web 特定样式 +} + +const harmonyStyle = { + ...baseStyle, + width: pxTransform(14), + height: pxTransform(14), + // ... 其他鸿蒙特定样式 +} + <View - style={ - !harmony() - ? { - display: 'inline-block', - // ... 当前样式 - } - : { - display: 'inline-block', - // ... 当前样式 - } - } + style={!harmony() ? webStyle : harmonyStyle} >Also applies to: 13-48
src/packages/indicator/demos/taro/demo4.tsx (1)
Line range hint
35-41
: 建议改进 TypeScript 类型定义目前使用
@ts-ignore
来处理阴影属性。建议为这些样式属性添加适当的类型定义,以提高代码的类型安全性。src/packages/range/demos/taro/demo11.tsx (1)
4-4
: 代码简化得当,但仍有优化空间成功移除了 RN 特定的代码,但有以下几点建议:
buttonNativeStyle
现在总是返回空对象,可以考虑完全移除这个变量- 样式中的
@ts-ignore
注释应该通过proper类型定义来解决Also applies to: 9-9, 67-67
src/packages/overlay/overlay.taro.tsx (1)
8-8
: 优化了条件渲染逻辑
- 导入语句的更改符合重构方向
- 条件渲染逻辑保持清晰,同时保留了动画效果的处理
- 组件的核心功能未受影响
建议:考虑添加注释说明不同平台的渲染差异。
Also applies to: 105-105
src/packages/popup/demo.taro.tsx (1)
6-6
: 简化了平台特定的渲染逻辑
- 使用
harmony()
替代harmonyAndRn()
保持了代码的一致性- 条件渲染逻辑
harmony() ? null : ...
清晰表达了平台差异建议:考虑添加注释说明为什么 Demo7 在鸿蒙端不可用。
Also applies to: 99-99
src/packages/hoverbutton/demo.taro.tsx (1)
12-12
: 优化了平台检测和注释说明
- 平台检测逻辑更新符合项目重构方向
- 注释更新准确反映了鸿蒙端的支持情况
isNative
变量的使用保持了样式逻辑的正确性建议:考虑在注释中添加更多关于 ConfigProvider 不支持的具体原因。
Also applies to: 15-15, 88-88
src/packages/cell/demos/taro/demo6.tsx (1)
76-76
: 图标渲染逻辑优化!统一了图标的渲染方式,简化了代码结构,使维护工作更加便捷。建议考虑将这种模式应用到其他类似场景。
Also applies to: 113-117
src/packages/button/button.taro.tsx (1)
Line range hint
94-98
: 样式处理逻辑优化!改进了按钮组件的样式处理逻辑:
- 简化了背景色的设置逻辑
- 统一了条件渲染的方式
建议考虑进一步优化:
- 可以将样式计算逻辑抽取为独立的工具函数
- 考虑使用CSS变量来处理动态样式
Also applies to: 170-170
packages/nutui-taro-demo/config/index.js (1)
13-13
: 配置简化提升了可维护性移除了 RN 相关的插件配置,使配置文件更加清晰和易于维护。建议更新相关文档以反映这一变化。
建议在 README 或相关文档中说明不再支持 RN 平台。
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (82)
gulpfile.js
(0 hunks)package.json
(1 hunks)packages/nutui-taro-demo/babel.config.js
(1 hunks)packages/nutui-taro-demo/config/index.js
(1 hunks)packages/nutui-taro-demo/package.json
(0 hunks)packages/nutui-taro-demo/scripts/taro/generate-nutui-taro.js
(0 hunks)packages/nutui-taro-demo/src/app.ts
(1 hunks)scripts/rn/copy-file.js
(0 hunks)src/packages/avatar/avatar.taro.tsx
(3 hunks)src/packages/avatar/demos/taro/demo4.tsx
(1 hunks)src/packages/avatar/demos/taro/demo5.tsx
(1 hunks)src/packages/avatar/demos/taro/demo6.tsx
(3 hunks)src/packages/avatar/demos/taro/demo7.tsx
(2 hunks)src/packages/backtop/backtop.scss
(0 hunks)src/packages/backtop/backtop.taro.tsx
(0 hunks)src/packages/backtop/doc.en-US.md
(2 hunks)src/packages/backtop/doc.taro.md
(1 hunks)src/packages/backtop/doc.zh-TW.md
(1 hunks)src/packages/button/button.scss
(2 hunks)src/packages/button/button.taro.tsx
(3 hunks)src/packages/button/demo.taro.tsx
(2 hunks)src/packages/cell/demos/taro/demo6.tsx
(4 hunks)src/packages/col/col.scss
(0 hunks)src/packages/divider/demo.taro.tsx
(1 hunks)src/packages/divider/demos/taro/demo5.tsx
(1 hunks)src/packages/empty/demo.taro.tsx
(1 hunks)src/packages/empty/empty.taro.tsx
(1 hunks)src/packages/hoverbutton/demo.taro.tsx
(2 hunks)src/packages/hoverbutton/demos/taro/demo3.tsx
(1 hunks)src/packages/hoverbutton/demos/taro/demo4.tsx
(2 hunks)src/packages/hoverbutton/hoverbutton.scss
(0 hunks)src/packages/hoverbutton/hoverbutton.taro.tsx
(0 hunks)src/packages/hoverbuttonitem/hoverbuttonitem.taro.tsx
(4 hunks)src/packages/image/demo.taro.tsx
(2 hunks)src/packages/image/image.taro.tsx
(1 hunks)src/packages/indicator/demo.taro.tsx
(1 hunks)src/packages/indicator/demos/taro/demo2.tsx
(1 hunks)src/packages/indicator/demos/taro/demo3.tsx
(1 hunks)src/packages/indicator/demos/taro/demo4.tsx
(2 hunks)src/packages/input/input.scss
(0 hunks)src/packages/inputnumber/inputnumber.taro.tsx
(4 hunks)src/packages/navbar/navbar.scss
(1 hunks)src/packages/notify/demo.taro.tsx
(1 hunks)src/packages/notify/demos/taro/demo4.tsx
(2 hunks)src/packages/notify/notify.taro.tsx
(1 hunks)src/packages/overlay/overlay.scss
(0 hunks)src/packages/overlay/overlay.taro.tsx
(2 hunks)src/packages/popup/demo.taro.tsx
(2 hunks)src/packages/popup/demos/taro/demo3.tsx
(2 hunks)src/packages/progress/demo.taro.tsx
(2 hunks)src/packages/progress/demos/taro/demo2.tsx
(1 hunks)src/packages/progress/demos/taro/demo7.tsx
(1 hunks)src/packages/progress/progress.taro.tsx
(3 hunks)src/packages/pulltorefresh/demo.taro.tsx
(2 hunks)src/packages/pulltorefresh/pulltorefresh.taro.tsx
(0 hunks)src/packages/range/demos/taro/demo1.tsx
(1 hunks)src/packages/range/demos/taro/demo10.tsx
(1 hunks)src/packages/range/demos/taro/demo11.tsx
(2 hunks)src/packages/range/demos/taro/demo12.tsx
(1 hunks)src/packages/range/demos/taro/demo13.tsx
(2 hunks)src/packages/range/demos/taro/demo2.tsx
(1 hunks)src/packages/range/demos/taro/demo3.tsx
(1 hunks)src/packages/range/demos/taro/demo4.tsx
(1 hunks)src/packages/range/demos/taro/demo5.tsx
(1 hunks)src/packages/range/demos/taro/demo6.tsx
(1 hunks)src/packages/range/demos/taro/demo7.tsx
(1 hunks)src/packages/range/demos/taro/demo8.tsx
(1 hunks)src/packages/range/demos/taro/demo9.tsx
(1 hunks)src/packages/range/range.taro.tsx
(6 hunks)src/packages/skeleton/demo.taro.tsx
(2 hunks)src/packages/skeleton/skeleton.scss
(0 hunks)src/packages/swipe/demos/taro/demo2.tsx
(2 hunks)src/packages/swipe/demos/taro/demo9.tsx
(2 hunks)src/packages/swipe/swipe.taro.tsx
(2 hunks)src/packages/swiper/demo.taro.tsx
(2 hunks)src/packages/swiper/demos/taro/demo5.tsx
(2 hunks)src/packages/swiper/swiper.scss
(0 hunks)src/packages/tag/tag.scss
(0 hunks)src/packages/toast/demo.taro.tsx
(2 hunks)src/packages/toast/toast.scss
(0 hunks)src/utils/get-rect-by-taro.ts
(0 hunks)src/utils/platform-taro.ts
(0 hunks)
⛔ Files not processed due to max files limit (1)
- src/utils/px-transform.ts
💤 Files with no reviewable changes (18)
- src/packages/backtop/backtop.scss
- src/packages/col/col.scss
- src/packages/skeleton/skeleton.scss
- src/packages/tag/tag.scss
- packages/nutui-taro-demo/scripts/taro/generate-nutui-taro.js
- src/packages/overlay/overlay.scss
- src/utils/platform-taro.ts
- src/packages/backtop/backtop.taro.tsx
- src/packages/input/input.scss
- src/utils/get-rect-by-taro.ts
- src/packages/pulltorefresh/pulltorefresh.taro.tsx
- src/packages/hoverbutton/hoverbutton.taro.tsx
- src/packages/toast/toast.scss
- src/packages/swiper/swiper.scss
- scripts/rn/copy-file.js
- gulpfile.js
- src/packages/hoverbutton/hoverbutton.scss
- packages/nutui-taro-demo/package.json
✅ Files skipped from review due to trivial changes (3)
- src/packages/indicator/demos/taro/demo3.tsx
- src/packages/navbar/navbar.scss
- src/packages/backtop/doc.zh-TW.md
🔇 Additional comments (55)
src/packages/backtop/doc.taro.md (1)
45-45
: 文档更新符合重构目标!删除 RN 相关内容的同时保持了鸿蒙端使用说明的完整性和清晰度。
src/packages/backtop/doc.en-US.md (1)
53-53
: 英文文档标题更新准确!英文文档中移除 RN 相关内容的修改与中文文档保持一致。
src/packages/swiper/demo.taro.tsx (2)
16-16
: 导入语句的更改符合重构目标!从
harmonyAndRn
更改为harmony
的导入简化了平台检测逻辑,有效地移除了特殊环境处理。
Line range hint
73-78
: 请验证条件渲染逻辑的正确性条件从
harmonyAndRn()
更改为!harmony()
可能会改变垂直居中展示部分的可见性行为。建议确认:
- 这个更改是否符合预期
- 在所有目标平台上的行为是否正确
运行以下脚本来验证其他组件是否有类似的模式:
✅ Verification successful
垂直居中展示部分的条件渲染逻辑修改是正确的
从代码库中的模式可以看出,这个改动:
- 符合其他组件处理鸿蒙系统特性支持的一贯做法
- 正确地移除了对 React Native 平台的不必要限制
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 搜索其他可能受影响的类似条件渲染模式 rg "harmony\(\)" src/packages -A 2 -B 2Length of output: 29848
src/packages/skeleton/demo.taro.tsx (2)
13-13
: 导入语句的更改符合重构目标!从
harmonyAndRn
更改为harmony
的导入简化了平台检测逻辑,使代码更加清晰。
Line range hint
56-63
: 条件渲染逻辑得到简化!使用
harmony()
替换harmonyAndRn()
使平台检测更加直接。建议验证在所有支持的环境中的行为是否一致。✅ Verification successful
平台检测逻辑变更验证完成!
代码库中已完全移除
harmonyAndRn
函数,现在统一使用harmony()
进行平台检测。该函数实现简单清晰,通过检查 Taro 环境变量来判断是否运行在鸿蒙系统上。验证显示这个改动是安全的。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 描述:验证其他组件中是否还存在 harmonyAndRn 的使用 # 检查:搜索可能遗漏的 harmonyAndRn 使用 rg "harmonyAndRn" --type tsxLength of output: 56
Script:
#!/bin/bash # 搜索所有 .ts 和 .tsx 文件中的 harmonyAndRn 使用 rg "harmonyAndRn" -g "*.{ts,tsx}" # 搜索 harmony 函数的实现和使用 rg "harmony\(\)" -g "*.{ts,tsx}" -A 2 # 使用 ast-grep 查找 harmony 和 harmonyAndRn 函数的定义 ast-grep --pattern 'function harmony() { $$$ }' ast-grep --pattern 'function harmonyAndRn() { $$$ }' ast-grep --pattern 'const harmony = () => { $$$ }' ast-grep --pattern 'const harmonyAndRn = () => { $$$ }'Length of output: 20192
packages/nutui-taro-demo/src/app.ts (1)
4-6
: 请验证样式和触摸模拟器的无条件导入对包大小的影响移除环境检查后,这些导入将始终包含在构建中。建议:
- 验证这些更改是否会显著增加生产包的大小
- 考虑是否需要为不同平台保留条件性导入
✅ Verification successful
无条件导入对包大小的影响可以接受
分析结果表明:
- reset.scss 样式文件体积较小(1.4K)
- @nutui/touch-emulator 是轻量级依赖
- 这些导入对核心功能是必需的,移除条件判断可以简化代码
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查构建包大小的变化 du -h dist/* 2>/dev/null || echo "请先构建项目以检查包大小"Length of output: 184
Script:
#!/bin/bash # Check size of style files and touch-emulator echo "=== Style files size ===" fd -e scss -e css . | xargs ls -lh 2>/dev/null || true echo -e "\n=== Touch emulator size ===" find . -type f -path "*/node_modules/@nutui/touch-emulator/*" -not -path "*/node_modules/**/node_modules/*" -exec ls -lh {} \; 2>/dev/null || true echo -e "\n=== Similar import patterns ===" rg "import\(.*\)" -g "!{node_modules,dist}/*" --no-headingLength of output: 15994
src/packages/divider/demos/taro/demo5.tsx (1)
14-14
: 代码简化改进获得认可移除平台特定的边框样式逻辑,使用统一的虚线样式,这样的改动:
- 提高了代码的可维护性
- 保持了跨平台的一致性
src/packages/range/demos/taro/demo9.tsx (1)
4-4
: 代码更改符合重构目标!将
harmonyAndRn
替换为harmony
的修改保持了代码的一致性,同时简化了平台检测逻辑。Also applies to: 8-8
packages/nutui-taro-demo/babel.config.js (1)
17-17
: 请验证构建过程的影响移除了基于 TARO_ENV 的条件判断,现在 TypeScript 插件将始终被包含在构建中。建议验证这个改动对所有环境的构建过程没有负面影响。
✅ Verification successful
TypeScript 插件配置变更验证完成
经过验证,移除 TARO_ENV 条件判断是安全的改动:
- 项目中没有发现 React Native 相关的特殊 TypeScript 配置
- 其他环境(h5、weapp、harmony 等)的构建配置都已在 config/index.js 中正确维护
- TypeScript 转换插件对所有环境都是必需的
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查是否存在依赖 TARO_ENV 的其他构建配置 rg -l "TARO_ENV.*[\"']rn[\"']" .Length of output: 38
Script:
#!/bin/bash # Search for any TARO_ENV usage in configuration files echo "=== Checking for TARO_ENV usage ===" rg "TARO_ENV" --type js --type json --type ts # Search for TypeScript-related babel configurations echo -e "\n=== Checking for TypeScript babel configurations ===" rg "@babel/.*typescript" --type js --type json # Look for other environment-specific configurations echo -e "\n=== Checking for environment-specific configurations ===" fd -e config.js -e .json -x rg -l "process\.env\." {} \;Length of output: 2421
src/packages/avatar/demos/taro/demo7.tsx (1)
4-4
: 平台检测逻辑简化导入和条件判断已更新为使用
harmony
函数,这符合移除 RN 特定处理的重构目标。颜色值的设置逻辑保持不变,仍然基于平台类型进行适配。建议验证在所有目标平台上的显示效果是否符合预期。
Also applies to: 13-14
✅ Verification successful
平台检测更新已完整实施
经验证,
harmony
函数已在整个 avatar 组件包中得到一致性应用,包括:
- 函数实现正确,使用
Taro.getEnv()
进行平台检测- 所有相关文件都已更新为新的平台检测方式
- 没有遗留旧的
harmonyAndRn
使用实例🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查其他组件中是否还存在 harmonyAndRn 的使用 rg "harmonyAndRn" "src/packages/avatar/"Length of output: 38
Script:
#!/bin/bash # 检查 harmony 函数的实现 ast-grep --pattern 'export const harmony = $_' # 搜索其他可能的平台检查模式 rg -g '*.{ts,tsx}' "(?i)(platform|isHarmony|harmony)" src/packages/avatar/Length of output: 2136
src/packages/range/demos/taro/demo6.tsx (1)
5-5
: 平台特定样式处理优化使用
harmony
替换了harmonyAndRn
,并正确使用useMemo
缓存了平台特定的样式对象。Also applies to: 9-17
src/packages/range/demos/taro/demo4.tsx (1)
5-5
: 平台检测逻辑简化将
harmonyAndRn
替换为harmony
简化了平台检测逻辑,移除了 React Native 相关的特殊处理。这个改动符合 PR 的重构目标。建议验证在所有支持的平台上的样式表现是否一致。
Also applies to: 9-9
✅ Verification successful
平台检测更改已完全迁移
代码库中已完全移除
harmonyAndRn
,新的harmony
导入模式已在所有相关组件中统一使用,这表明平台检测逻辑的重构已经完成且保持一致。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查其他组件是否还在使用 harmonyAndRn rg "harmonyAndRn" --type tsxLength of output: 56
Script:
#!/bin/bash # 检查 harmonyAndRn 的使用情况 rg "harmonyAndRn" -t ts -t tsx # 检查新的 harmony 导入模式 rg "import.*harmony.*from.*@/utils/platform" -t ts -t tsxLength of output: 146
Script:
#!/bin/bash # 使用 fd 查找文件并通过 grep 搜索内容 echo "查找 harmonyAndRn 的使用:" fd -e tsx -e ts | xargs grep -l "harmonyAndRn" 2>/dev/null || true echo -e "\n查找 harmony 的导入:" fd -e tsx -e ts | xargs grep -l "import.*harmony.*from.*@/utils/platform" 2>/dev/null || trueLength of output: 2697
src/packages/range/demos/taro/demo8.tsx (1)
5-5
: 保持一致的平台检测更新此更改与其他 demo 文件保持一致,统一使用
harmony
进行平台检测。代码逻辑清晰,没有引入新的复杂性。Also applies to: 9-9
src/packages/range/demos/taro/demo5.tsx (1)
5-5
: 建议进行跨平台测试虽然平台检测逻辑的简化是合理的,但由于该组件使用了特定的范围值(-10 到 10),建议在不同平台上验证数值计算和显示是否正确。
Also applies to: 9-9
src/packages/range/demos/taro/demo3.tsx (1)
5-5
: 代码重构符合预期!成功移除了 React Native 相关的特殊处理,使用
harmony()
替代harmonyAndRn()
,同时保持了原有的样式逻辑功能。Also applies to: 9-9
src/packages/range/demos/taro/demo10.tsx (1)
4-4
: 保持一致的重构模式!与其他文件保持一致,成功将
harmonyAndRn
替换为harmony
,维持了代码库的一致性。Also applies to: 8-8
src/packages/notify/demo.taro.tsx (1)
30-30
: 成功简化组件样式逻辑!移除了 React Native 相关的条件样式判断,使代码更加简洁清晰。ScrollView 组件现在使用更简单的样式处理方式。
src/packages/notify/demos/taro/demo4.tsx (1)
3-3
: 平台检测逻辑简化和注释更新导入和条件渲染的更改准确反映了当前的平台支持情况。注释更新清晰地表明了bottom位置仅在HARMONY平台不支持。
Also applies to: 46-47
src/packages/progress/demos/taro/demo7.tsx (1)
5-5
: 平台检测逻辑简化将
harmonyAndRn
替换为harmony
使平台检测逻辑更加清晰,符合重构目标。条件渲染逻辑保持一致,不影响组件的核心功能。Also applies to: 13-13
src/packages/popup/demos/taro/demo3.tsx (1)
4-4
: 条件渲染逻辑优化平台检测函数的更新保持了原有的条件渲染行为,同时简化了代码。自定义图标的渲染逻辑更加清晰。
Also applies to: 26-34
src/packages/range/demos/taro/demo12.tsx (1)
5-5
: 平台特定样式逻辑优化使用
harmony
函数简化了平台检测,同时保持了不同平台的特定样式需求。useMemo
中的条件判断更加简洁。Also applies to: 9-20
src/packages/divider/demo.taro.tsx (1)
42-43
: 移除平台特定渲染限制移除了针对 React Native 环境的条件渲染检查,使虚线分割线组件在所有平台上都可见,简化了代码结构。
src/packages/indicator/demo.taro.tsx (1)
58-58
: 移除了 RN 环境的条件渲染移除了对 React Native 环境的特殊处理,现在 Demo3 组件将在所有环境中渲染。
请确认 Demo3 组件在所有目标平台上都能正常工作。
✅ Verification successful
移除条件渲染是安全的
Demo3 组件的实现是跨平台通用的,没有发现任何特定于平台的代码。移除 React Native 环境的条件判断不会影响组件的功能。
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查 Demo3 组件是否包含特定于平台的代码 ast-grep --pattern 'import { Platform } from "react-native"' src/packages/indicator/demos/taro/demo3.tsxLength of output: 106
Script:
#!/bin/bash # 查找 Demo3 组件文件 fd "demo3" src/packages/indicator # 检查文件内容中的平台特定代码 rg -i "platform|rn|react.?native" $(fd "demo3" src/packages/indicator) || true # 查看 Demo3 组件的完整实现 ast-grep --pattern 'const Demo3 = () => { $$$ }'Length of output: 65834
src/packages/empty/demo.taro.tsx (1)
51-52
: 统一了 Demo4 的渲染逻辑移除了针对 React Native 环境的条件判断,简化了组件渲染逻辑。
建议验证 Demo4 在所有平台上的展示效果:
✅ Verification successful
Demo4 组件验证完成,确认安全
经过验证,Demo4 组件在 Taro 和 H5 版本中都采用了统一的实现方式,仅在展示布局上有所区别:
- Taro 版本直接展示所有状态
- H5 版本使用 Tabs 组件展示
移除 RN 环境判断是安全的,不会影响组件的跨平台兼容性。
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查 Demo4 是否存在平台特定的样式或逻辑 rg -l "Platform|RN|ReactNative" src/packages/empty/demos/taro/demo4.tsxLength of output: 73
Script:
#!/bin/bash # 定位 Demo4 文件 fd "demo4" src/packages/empty # 如果找到文件,显示其内容 fd "demo4" src/packages/empty -x cat {} # 检查相关样式文件 fd "demo4.scss|demo4.less|demo4.css" src/packages/emptyLength of output: 1786
src/packages/toast/demo.taro.tsx (1)
11-11
: 更新了平台检测工具函数将
harmonyAndRn
替换为harmony
,优化了平台检测逻辑。src/packages/image/demo.taro.tsx (1)
14-14
: 平台检测逻辑简化将特殊的平台检测逻辑
harmonyAndRn
替换为harmony
,使代码更加简洁。这个改动符合重构目标,移除了特殊环境的处理逻辑。Also applies to: 61-66
src/packages/swipe/demos/taro/demo2.tsx (1)
5-5
: 统一使用 harmony 进行平台检测删除了
harmonyAndRn
相关代码,改用harmony
函数来控制 Del 图标的渲染,保持了与其他组件一致的平台检测方式。Also applies to: 21-21
src/packages/swiper/demos/taro/demo5.tsx (1)
6-6
: 简化导航箭头的平台检测逻辑移除了
harmonyAndRn
的使用,改为使用harmony
函数来控制导航箭头的显示。这个改动使平台检测逻辑更加统一和清晰。Also applies to: 66-66, 69-69
src/packages/progress/demo.taro.tsx (1)
13-13
: 优化延迟加载演示的条件渲染将
harmonyAndRn
替换为harmony
,简化了平台检测逻辑。这个改动保持了功能的完整性,同时提高了代码的可维护性。Also applies to: 68-73
src/packages/range/demos/taro/demo13.tsx (1)
5-5
: 代码更改看起来没有问题!将
harmonyAndRn
替换为harmony
的重构简化了平台检测逻辑,同时保持了组件的原有功能。Also applies to: 9-9, 21-21
src/packages/indicator/demos/taro/demo4.tsx (1)
4-4
: 代码逻辑修改正确!成功地将平台检测逻辑从
harmonyAndRn
迁移到了harmony
。Also applies to: 14-14
src/packages/hoverbuttonitem/hoverbuttonitem.taro.tsx (2)
5-5
: 重构成功完成,逻辑更清晰成功将平台检测逻辑统一到
harmony
函数,代码更加简洁明了。Also applies to: 34-34, 45-45, 49-49, 79-81
33-33
: 需要处理遗留的 TODO 注释代码中还存在一个关于暗黑模式的待办事项:
// @TODO 待添加暗黑模式及样式变量功能
是否需要在本次重构中一并处理这个功能?
如果需要实现暗黑模式,我可以帮助生成相关代码或创建新的 GitHub issue 来跟踪这项任务。
src/packages/button/demo.taro.tsx (1)
16-16
: 代码重构:简化了平台检测逻辑将
harmonyAndRn
替换为harmony
使代码更加清晰,符合移除 RN 特殊处理的重构目标。条件渲染逻辑保持一致。Also applies to: 61-61
src/packages/empty/empty.taro.tsx (1)
Line range hint
95-102
: 代码简化获得认可!代码通过移除环境特定的检查,使imageSize的处理逻辑更加清晰和统一。这种改进提高了代码的可维护性。
src/packages/image/image.taro.tsx (1)
78-78
: 样式处理优化值得肯定!通过统一borderRadius的处理逻辑,移除了特定平台的判断,使代码更加简洁和一致。这样的改进有助于提高代码的可读性和维护性。
src/packages/cell/demos/taro/demo6.tsx (1)
25-25
: UI一致性改进获得认可!移除了平台特定的条件渲染,确保ArrowRight组件在所有平台上都能一致显示,这提升了用户体验的一致性。
Also applies to: 35-35
src/packages/button/button.taro.tsx (1)
12-12
: 依赖导入优化!简化了平台检测的依赖导入,使用更精确的harmony函数替代了harmonyAndRn。
src/packages/avatar/avatar.taro.tsx (3)
15-15
: 导入语句更改符合重构目标移除了
harmonyAndRn
导入,仅保留harmony
,这符合移除 RN 特定代码的重构目标。
Line range hint
97-101
: 检查 margin 样式变更的影响margin 属性的设置逻辑已更改,需要确保这不会影响现有的布局。
运行以下命令检查其他使用了 Avatar 组件的地方:
✅ Verification successful
RTL 支持相关的样式变更已验证安全
此次对 margin 样式的修改仅涉及方向切换(左右互换),不会影响现有布局:
- 间距计算逻辑(gap)保持不变
- 仅在 RTL 模式下将 marginLeft 切换为 marginRight
- 保持了与现有布局的兼容性
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 搜索使用了 Avatar 组件的文件 ast-grep --pattern 'Avatar $$$'Length of output: 33
Script:
#!/bin/bash # 搜索 Avatar 相关的导入语句和使用 rg -i "avatar" -t tsx -t ts -t jsx -t js -A 2 # 特别搜索 AvatarGroup 的使用 rg -i "avatargroup" -t tsx -t ts -t jsx -t js -A 2Length of output: 152
36-36
: 验证默认尺寸在 Harmony 平台的兼容性默认尺寸的条件判断从
harmonyAndRn()
改为harmony()
,这可能会影响组件在不同平台上的默认展示。请运行以下脚本验证 Avatar 组件在其他平台上的使用情况:
✅ Verification successful
Harmony 平台的默认尺寸设置是安全的
经过验证,将
harmonyAndRn()
改为harmony()
的修改是安全的。Avatar 组件在非 Harmony 平台上使用类名控制尺寸('normal'、'small'、'large'),不会受到此更改的影响。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 搜索 Avatar 组件的使用以验证默认尺寸的影响 rg -l "Avatar.*size" --type tsxLength of output: 61
Script:
#!/bin/bash # 搜索 Avatar 组件实现和使用 echo "=== 搜索 Avatar 组件文件 ===" fd -e tsx -e ts "avatar" echo -e "\n=== 搜索 Avatar 组件中的 size 相关代码 ===" rg "size.*harmony" -A 3 -B 3 echo -e "\n=== 搜索 Avatar 组件使用示例 ===" rg "Avatar.*size" -A 1 -B 1 echo -e "\n=== 查找 harmony 相关的平台判断逻辑 ===" rg "harmony(And)?Rn\(\)" -A 2 -B 2Length of output: 4404
src/packages/progress/progress.taro.tsx (2)
9-9
: 优化了平台检测相关的导入导入语句的更改符合代码库的重构方向,移除了不必要的 RN 相关依赖。
158-160
: 需要验证进度条组件在各平台的样式一致性多处与平台相关的样式计算逻辑发生变更:
- 观察者初始化逻辑
- 文本位置计算
- 内部样式计算
这些变更可能会影响组件在不同平台上的展示效果。
运行以下命令检查 Progress 组件的使用情况:
Also applies to: 169-173, 178-182
src/packages/swipe/swipe.taro.tsx (2)
15-15
: 简化了平台检测导入移除了
harmonyAndRn
导入,使用harmony
进行平台检测,符合重构目标。
268-268
: 验证滑动组件在各平台的交互行为触摸事件处理逻辑的变更可能会影响组件在不同平台上的交互体验。
运行以下命令检查 Swipe 组件的使用场景:
✅ Verification successful
滑动组件的平台适配逻辑验证完成
代码中的
harmony()
检查是正确的平台适配处理,用于优化鸿蒙系统上的交互体验。这个改动与代码库中其他组件的平台适配策略保持一致。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查 Swipe 组件的使用情况 ast-grep --pattern 'Swipe $$$'Length of output: 32
Script:
#!/bin/bash # 查找 Swipe 相关的导入语句 rg "import.*Swipe" -A 2 # 查找 harmony 函数的定义 ast-grep --pattern 'function harmony() { $$$ }' rg "harmony\(\)" -A 3 # 查找不同平台的 Swipe 实现 fd "swipe.*\.(tsx|jsx|ts|js)$"Length of output: 48852
Script:
#!/bin/bash # 查找 harmony 函数的定义 fd "harmony\.(ts|js|tsx|jsx)$" rg "export.*(function|const) harmony" -A 5Length of output: 466
src/packages/inputnumber/inputnumber.taro.tsx (2)
9-9
: 导入语句重构已完成导入语句的更改反映了从代码库中移除 React Native 特定处理的更广泛重构工作。这种简化提高了代码的可维护性。
Also applies to: 13-13
272-285
: 输入组件渲染逻辑得到简化移除了平台特定的条件渲染,现在使用标准的 HTML input 元素。这种统一的方法使代码更加清晰和一致。
src/packages/range/range.taro.tsx (3)
148-148
: 类名条件判断得到优化平台特定的类名判断已简化为仅检查 Harmony 环境,这提高了代码的可读性和维护性。
Also applies to: 153-153
526-526
: 变换样式逻辑简化移除了 React Native 特定的变换样式逻辑,采用统一的变换方式。这种改变使样式处理更加一致。
556-556
: 事件处理优化点击事件处理逻辑得到简化,移除了平台特定的处理方式。这提高了代码的可维护性。
Also applies to: 588-588
src/packages/notify/notify.taro.tsx (1)
102-119
: 通知组件渲染逻辑统一化移除了基于平台的条件渲染,现在统一使用 CSSTransition 组件。这种方法简化了代码结构,提高了可维护性。
src/packages/button/button.scss (2)
5-10
: 按钮宽度样式条件判断优化预处理器指令已更新,移除了 RN 相关的条件判断,使样式规则更加清晰。
75-78
: 按钮包装器背景样式优化简化了平台特定的背景样式处理,提高了样式规则的可维护性。
package.json (1)
94-94
: 脚本路径更新符合重构目标!将
update-taro-entry
脚本从rn
目录移动到harmony
目录符合移除 rntaro 特殊处理的重构目标。请运行以下脚本以验证构建过程未受影响:
✅ Verification successful
脚本迁移已完成且正确!
update-taro-entry.js
已成功迁移到scripts/harmony/
目录- 原
scripts/rn
目录已移除,符合重构目标package.json
中的脚本路径指向正确🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 描述:验证 update-taro-entry 脚本的路径更改是否影响其他构建脚本 # 测试:检查是否有其他脚本仍在引用旧路径 rg -l "scripts/rn/update-taro-entry" # 测试:验证新脚本是否存在 test -f "./scripts/harmony/update-taro-entry" && echo "新脚本存在" || echo "错误:新脚本不存在"Length of output: 211
Script:
#!/bin/bash # 查找所有名为 update-taro-entry 的文件 fd "update-taro-entry" # 检查 harmony 目录下的脚本文件 fd . "scripts/harmony" -t f # 检查原始 rn 目录是否存在相关文件 fd . "scripts/rn" -t fLength of output: 280
@@ -70,7 +70,7 @@ Due to the lack of support for fixed positioning, it needs to be used in conjunc | |||
| threshold | How high to scroll the page vertically | `number` | `200` | | |||
| zIndex | Set the component z-index | `number` | `900` | | |||
| duration | Set animation duration | `number` | `1000` | | |||
| scrollRes | Callback parameters of a ScrollView listener, mainly used for RN and HarmonyOS | `PageScrollObejct` | `-` | | |||
| scrollRes | Callback parameters of a ScrollView listener, mainly used for HarmonyOS | `PageScrollObejct` | `-` | |
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.
💡 Codebase verification
文档描述不一致,需要统一更新!
doc.en-US.md
中仅提到鸿蒙端,而其他语言版本(如doc.zh-TW.md
和doc.taro.md
)仍然包含 RN 相关描述backtop.taro.tsx
文件中的注释和demos/taro/demo5.tsx
中的 JDRN 相关内容也需要同步更新
🔗 Analysis chain
属性描述更新完整!
scrollRes
属性描述更新准确反映了当前支持的平台范围。
建议验证是否还有其他文档文件(如 demo 示例)需要同步更新。
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# 搜索可能遗漏的 RN 相关内容
rg -i "react.?native|RN" "src/packages/backtop/"
Length of output: 2399
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: 4
🧹 Nitpick comments (25)
src/packages/progress/demos/taro/demo2.tsx (1)
3-3
: 建议提取样式常量为了提高代码的可维护性和重用性,建议将颜色值提取为常量:
+const STYLE_CONFIG = { + harmony: { + color: '#FF0F23', + background: '#FFEAE8' + }, + default: { + color: 'var(--nutui-color-primary)', + background: 'var(--nutui-brand-1)' + } +} <Progress percent={30} - color={harmony() ? '#FF0F23' : 'var(--nutui-color-primary)'} - background={harmony() ? '#FFEAE8' : 'var(--nutui-brand-1)'} + color={harmony() ? STYLE_CONFIG.harmony.color : STYLE_CONFIG.default.color} + background={harmony() ? STYLE_CONFIG.harmony.background : STYLE_CONFIG.default.background} strokeWidth="15" />Also applies to: 10-11
src/packages/avatar/demos/taro/demo4.tsx (1)
4-4
: 建议优化条件样式的写法当前的模板字符串写法略显冗长,可以考虑将平台特定的样式值提取为常量或使用对象映射来简化代码。
建议重构为以下形式:
-background={`${harmony() ? '#ff0f23' : 'var(--nutui-color-primary)'}`} +background={harmony() ? '#ff0f23' : 'var(--nutui-color-primary)'} // 或者更进一步优化为 +const COLORS = { + harmony: { + primary: '#ff0f23', + background: '#ffebf1' + }, + default: { + primary: 'var(--nutui-color-primary)', + background: 'var(--nutui-color-primary-light-pressed)' + } +} +const theme = harmony() ? COLORS.harmony : COLORS.default // 然后在组件中使用 +background={theme.primary}Also applies to: 11-11, 15-16
src/packages/range/demos/taro/demo2.tsx (1)
4-4
: 建议提取共用的样式逻辑发现多个demo文件中存在相似的样式计算逻辑,建议将这些共用的样式计算提取到一个公共的hook或工具函数中。
建议创建一个自定义hook:
// src/hooks/useHarmonyStyle.ts import { useMemo } from 'react' import { harmony } from '@/utils/platform-taro' import pxTransform from '@/utils/px-transform' export const useHarmonyStyle = () => { return useMemo(() => { return harmony() ? { paddingTop: pxTransform(40), paddingBottom: pxTransform(40), paddingLeft: pxTransform(18), paddingRight: pxTransform(18), } : { padding: '40px 18px', } }, []) }这样可以在所有demo中统一使用:
const cellStyle = useHarmonyStyle()Also applies to: 8-16
src/packages/range/demos/taro/demo6.tsx (1)
5-5
: 优化代码结构建议
样式逻辑变更符合重构目标,但建议:
- 考虑将通用的样式逻辑抽取到共享组件或 hook 中
- 其他 demo 文件都有类似的重复代码
注意到有被注释的
Toast
相关代码,建议:
- 清理未使用的代码
- 或添加 TODO 注释说明保留原因
Also applies to: 9-18
src/packages/range/demos/taro/demo5.tsx (1)
5-5
: 保持一致的重构模式与其他演示文件保持一致的修改模式,成功移除了 rntaro 相关的特殊处理。
建议添加单元测试以确保在不同平台环境下的样式计算正确性。
Also applies to: 9-9
src/packages/range/demos/taro/demo7.tsx (1)
5-5
: 代码重构符合预期,建议清理注释代码重构更改与其他文件保持一致,成功移除了 rntaro 特殊处理。
建议清理被注释的 Toast 组件代码,提高代码整洁度。
Also applies to: 9-9
src/packages/range/demos/taro/demo3.tsx (1)
5-5
: 重构更改统一且不影响现有功能成功统一了平台检测逻辑,同时保持了百分比计算等核心功能不变。
建议在 README 中更新平台兼容性说明,反映移除 rntaro 支持的变化。
Also applies to: 9-9
src/packages/avatar/demos/taro/demo6.tsx (1)
4-4
: 建议提取重复的条件表达式代码中存在重复的条件表达式逻辑,建议将其提取为常量或自定义 hook 以提高可维护性。
import { harmony } from '@/utils/platform-taro' +const getAvatarStyles = () => ({ + color: harmony() ? '#ff0f23' : 'var(--nutui-color-primary)', + background: harmony() ? '#ffd6e1' : 'var(--nutui-brand-2)' +}) const Demo6 = () => { + const avatarStyles = getAvatarStyles() return ( <> <Cell> <Avatar.Group gap="-4"> <Avatar src="..." /> <Avatar icon={<User />} /> - <Avatar - color={`${harmony() ? '#ff0f23' : 'var(--nutui-color-primary)'}`} - background={`${harmony() ? '#ffd6e1' : 'var(--nutui-brand-2)'}`} - > + <Avatar {...avatarStyles}> U </Avatar> </Avatar.Group> </Cell> <Cell> <Avatar.Group max="3" maxColor="#fff" maxBackground="#498ff2"> <Avatar src="..." /> <Avatar icon={<User />} /> - <Avatar - color={`${harmony() ? '#ff0f23' : 'var(--nutui-color-primary)'}`} - background={`${harmony() ? '#ffd6e1' : 'var(--nutui-brand-2)'}`} - > + <Avatar {...avatarStyles}> U </Avatar> <Avatar icon={<User />} /> </Avatar.Group> </Cell> </> ) }Also applies to: 14-15, 26-27
src/packages/notify/demos/taro/demo4.tsx (1)
3-3
: 建议改进注释的表述方式代码变更符合重构目标。不过,建议将注释改写得更加明确和专业:
-/* HARMONY不支持bottom */ +/* 由于平台限制,在 HarmonyOS 环境下不支持 bottom 位置属性 */Also applies to: 46-47
src/packages/range/demos/taro/demo1.tsx (1)
Line range hint
44-52
: 建议清理未使用的代码建议移除被注释的 Toast 组件代码。如果这是一个临时的调试工具或未来要使用的功能,建议在代码中添加 TODO 注释说明原因,或者直接删除这段代码。
- {/* <Toast - type="text" - visible={show} - content={msg} - onClose={() => { - setShow(false) - }} - /> */}src/packages/popup/demos/taro/demo3.tsx (1)
4-4
: 优化自定义图标功能的平台适配关于将平台检测从
harmonyAndRn
改为harmony
的更改:
- 自定义图标功能现在在某些平台上不可用
- 可能影响用户界面的一致性
建议:
- 添加注释说明功能限制的原因
- 考虑为不支持自定义图标的平台提供备选方案
- 在文档中清晰说明平台差异
Also applies to: 26-34
src/packages/toast/demo.taro.tsx (1)
11-11
: 代码重构:简化平台检测逻辑代码变更移除了对 React Native 的特殊处理,使平台检测逻辑更加清晰。条件渲染逻辑保持了对 break-all 特性的正确处理。
建议在注释中明确说明不支持 break-all 的具体原因:
- {/* rn和 鸿蒙不支持 break-all */} + {/* 鸿蒙环境不支持 CSS break-all 属性 */}Also applies to: 49-54
src/packages/indicator/demos/taro/demo2.tsx (1)
Line range hint
41-44
: 建议:改进类型定义当前代码使用了
@ts-ignore
来处理阴影样式的类型问题。建议通过proper类型定义来解决:- // @ts-ignore - shadowColor: '#ff0f23', + shadowColor: '#ff0f23' as const,src/packages/image/demo.taro.tsx (1)
14-14
: 重构:优化条件渲染逻辑移除了React Native相关的平台检测,使代码更加简洁。条件渲染逻辑保持了对Demo8(懒加载功能)的正确处理。
建议添加注释说明为什么在鸿蒙环境下不支持懒加载功能:
+ {/* 鸿蒙环境暂不支持图片懒加载特性 */} {!harmony() && ( <> <View className="h2">{translated.lazyload}</View> <Demo8 /> </> )}
Also applies to: 61-66
src/packages/skeleton/demo.taro.tsx (1)
13-13
: 重构:简化骨架屏组件的平台适配代码变更符合重构目标,移除了React Native相关的平台检测逻辑。建议添加注释说明在鸿蒙环境下不显示圆角风格的原因。
+ {/* 鸿蒙环境暂不支持骨架屏圆角样式 */} {harmony() ? null : ( <> <View className="h2">{translated['0a001122']}</View> <Cell style={{ display: 'block' }}> <Demo4 /> </Cell> </> )}
Also applies to: 56-62
src/packages/overlay/overlay.taro.tsx (1)
Line range hint
105-124
: 建议优化条件渲染逻辑当前实现为不同平台维护了两套渲染逻辑。建议考虑统一处理方式,减少代码重复。
- {!harmony() ? ( - <CSSTransition - nodeRef={nodeRef} - classNames={`${classPrefix}-slide`} - unmountOnExit - timeout={duration} - in={innerVisible} - onEntered={onHandleOpened} - onExited={onHandleClosed} - > - <View - ref={nodeRef} - className={classes} - style={styles} - {...(rest as any)} - catchMove={lockScroll} - onClick={handleClick} - > - {children} - </View> - </CSSTransition> - ) : ( - renderHarmony() - )} + <View + ref={nodeRef} + className={classes} + style={styles} + {...(rest as any)} + catchMove={lockScroll} + onClick={handleClick} + > + {children} + </View>src/packages/popup/demo.taro.tsx (1)
6-6
: 条件渲染逻辑优化通过反转条件(
harmony() ? null : ...
)使代码更加直观。建议添加注释说明在 HarmonyOS 平台上不支持多层堆叠的原因。+ // HarmonyOS 平台不支持多层堆叠特性 harmony() ? null : ( <> <View className="h2">{translated.c9e6df49}</View> <Demo7 /> </> )
Also applies to: 99-104
src/packages/hoverbutton/demo.taro.tsx (1)
88-88
: 建议更新 TODO 注释的格式为了保持代码库的一致性,建议使用更标准的 TODO 格式。
- {/* @TODO 鸿蒙端暂不支持 ConfigProvider */} + {/* TODO: 鸿蒙端暂不支持 ConfigProvider */}src/packages/empty/empty.taro.tsx (1)
Line range hint
95-103
: 图片尺寸处理逻辑已优化移除了特定环境的处理逻辑,使代码更加清晰和统一。建议添加类型检查以提高代码的健壮性。
- if (typeof imageSize !== 'number') { + if (!imageSize) { + return {} + } + if (typeof imageSize === 'string') { return { width: imageSize, height: imageSize, } + } + if (typeof imageSize === 'number') { + return { + width: `${imageSize}px`, + height: `${imageSize}px`, + } } - return { - width: `${imageSize}px`, - height: `${imageSize}px`, - } + return {}src/packages/image/image.taro.tsx (1)
78-78
: 边框圆角处理逻辑已简化移除了特定环境的处理逻辑,使圆角样式处理更加统一。建议添加空值合并运算符以简化条件判断。
- radius !== undefined && radius != null ? pxCheck(radius) : '', + radius ?? '',src/packages/cell/demos/taro/demo6.tsx (1)
25-25
: 统一了箭头图标的渲染逻辑移除了基于平台的条件渲染,使界面表现更加一致。建议考虑将重复的样式提取为常量。
+const arrowStyle = { + marginLeft: pxTransform(5), +} + // 在组件中使用 -<ArrowRight size={12} style={{ marginLeft: 5 }} /> +<ArrowRight size={12} style={arrowStyle} />Also applies to: 35-35, 76-76, 113-117
src/packages/avatar/avatar.taro.tsx (2)
36-36
: 优化默认尺寸设置逻辑当前实现在 harmony 环境下硬编码了默认尺寸为 '40'。建议将此值提取为常量或配置项,以提高可维护性。
+ const DEFAULT_HARMONY_SIZE = '40' - size: harmony() ? '40' : '', + size: harmony() ? DEFAULT_HARMONY_SIZE : '',
Line range hint
97-101
: 简化边距计算逻辑当前的边距计算逻辑可以更简洁。建议提取条件判断以提高可读性。
+ const marginKey = harmony() ? 'marginRight' : 'marginLeft' + const marginValue = avatarIndex !== 1 && propAvatarGroup?.gap ? `${propAvatarGroup?.gap}px` : '' - [harmony() ? 'marginRight' : 'marginLeft']: - avatarIndex !== 1 && propAvatarGroup?.gap - ? `${propAvatarGroup?.gap}px` - : '', + [marginKey]: marginValue,src/packages/progress/progress.taro.tsx (1)
158-160
: 优化环境检测逻辑当前实现使用了否定条件
!harmony()
,这可能降低代码可读性。建议重构为更直观的条件判断。- } else if (!harmony()) { + } else if (web() || !harmony()) {packages/nutui-taro-demo/config/index.js (1)
13-16
: 优化插件配置逻辑当前的插件配置逻辑可以更清晰。建议使用更直观的条件判断和命名。
- let plugins = !['harmony', 'jdharmony'].includes(process.env.TARO_ENV) - ? ['@tarojs/plugin-html'] - : [] + const HARMONY_ENVS = ['harmony', 'jdharmony'] + let plugins = HARMONY_ENVS.includes(process.env.TARO_ENV) ? [] : ['@tarojs/plugin-html']
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (82)
gulpfile.js
(0 hunks)package.json
(1 hunks)packages/nutui-taro-demo/babel.config.js
(1 hunks)packages/nutui-taro-demo/config/index.js
(1 hunks)packages/nutui-taro-demo/package.json
(0 hunks)packages/nutui-taro-demo/scripts/taro/generate-nutui-taro.js
(0 hunks)packages/nutui-taro-demo/src/app.ts
(1 hunks)scripts/rn/copy-file.js
(0 hunks)src/packages/avatar/avatar.taro.tsx
(3 hunks)src/packages/avatar/demos/taro/demo4.tsx
(1 hunks)src/packages/avatar/demos/taro/demo5.tsx
(1 hunks)src/packages/avatar/demos/taro/demo6.tsx
(3 hunks)src/packages/avatar/demos/taro/demo7.tsx
(2 hunks)src/packages/backtop/backtop.scss
(0 hunks)src/packages/backtop/backtop.taro.tsx
(0 hunks)src/packages/backtop/doc.en-US.md
(2 hunks)src/packages/backtop/doc.taro.md
(1 hunks)src/packages/backtop/doc.zh-TW.md
(1 hunks)src/packages/button/button.scss
(2 hunks)src/packages/button/button.taro.tsx
(3 hunks)src/packages/button/demo.taro.tsx
(2 hunks)src/packages/cell/demos/taro/demo6.tsx
(4 hunks)src/packages/col/col.scss
(0 hunks)src/packages/divider/demo.taro.tsx
(1 hunks)src/packages/divider/demos/taro/demo5.tsx
(1 hunks)src/packages/empty/demo.taro.tsx
(1 hunks)src/packages/empty/empty.taro.tsx
(1 hunks)src/packages/hoverbutton/demo.taro.tsx
(2 hunks)src/packages/hoverbutton/demos/taro/demo3.tsx
(1 hunks)src/packages/hoverbutton/demos/taro/demo4.tsx
(2 hunks)src/packages/hoverbutton/hoverbutton.scss
(0 hunks)src/packages/hoverbutton/hoverbutton.taro.tsx
(0 hunks)src/packages/hoverbuttonitem/hoverbuttonitem.taro.tsx
(4 hunks)src/packages/image/demo.taro.tsx
(2 hunks)src/packages/image/image.taro.tsx
(1 hunks)src/packages/indicator/demo.taro.tsx
(1 hunks)src/packages/indicator/demos/taro/demo2.tsx
(1 hunks)src/packages/indicator/demos/taro/demo3.tsx
(1 hunks)src/packages/indicator/demos/taro/demo4.tsx
(2 hunks)src/packages/input/input.scss
(0 hunks)src/packages/inputnumber/inputnumber.taro.tsx
(4 hunks)src/packages/navbar/navbar.scss
(1 hunks)src/packages/notify/demo.taro.tsx
(1 hunks)src/packages/notify/demos/taro/demo4.tsx
(2 hunks)src/packages/notify/notify.taro.tsx
(1 hunks)src/packages/overlay/overlay.scss
(0 hunks)src/packages/overlay/overlay.taro.tsx
(2 hunks)src/packages/popup/demo.taro.tsx
(2 hunks)src/packages/popup/demos/taro/demo3.tsx
(2 hunks)src/packages/progress/demo.taro.tsx
(2 hunks)src/packages/progress/demos/taro/demo2.tsx
(1 hunks)src/packages/progress/demos/taro/demo7.tsx
(1 hunks)src/packages/progress/progress.taro.tsx
(3 hunks)src/packages/pulltorefresh/demo.taro.tsx
(2 hunks)src/packages/pulltorefresh/pulltorefresh.taro.tsx
(0 hunks)src/packages/range/demos/taro/demo1.tsx
(1 hunks)src/packages/range/demos/taro/demo10.tsx
(1 hunks)src/packages/range/demos/taro/demo11.tsx
(2 hunks)src/packages/range/demos/taro/demo12.tsx
(1 hunks)src/packages/range/demos/taro/demo13.tsx
(2 hunks)src/packages/range/demos/taro/demo2.tsx
(1 hunks)src/packages/range/demos/taro/demo3.tsx
(1 hunks)src/packages/range/demos/taro/demo4.tsx
(1 hunks)src/packages/range/demos/taro/demo5.tsx
(1 hunks)src/packages/range/demos/taro/demo6.tsx
(1 hunks)src/packages/range/demos/taro/demo7.tsx
(1 hunks)src/packages/range/demos/taro/demo8.tsx
(1 hunks)src/packages/range/demos/taro/demo9.tsx
(1 hunks)src/packages/range/range.taro.tsx
(6 hunks)src/packages/skeleton/demo.taro.tsx
(2 hunks)src/packages/skeleton/skeleton.scss
(0 hunks)src/packages/swipe/demos/taro/demo2.tsx
(2 hunks)src/packages/swipe/demos/taro/demo9.tsx
(2 hunks)src/packages/swipe/swipe.taro.tsx
(2 hunks)src/packages/swiper/demo.taro.tsx
(2 hunks)src/packages/swiper/demos/taro/demo5.tsx
(2 hunks)src/packages/swiper/swiper.scss
(0 hunks)src/packages/tag/tag.scss
(0 hunks)src/packages/toast/demo.taro.tsx
(2 hunks)src/packages/toast/toast.scss
(0 hunks)src/utils/get-rect-by-taro.ts
(0 hunks)src/utils/platform-taro.ts
(0 hunks)
⛔ Files not processed due to max files limit (1)
- src/utils/px-transform.ts
💤 Files with no reviewable changes (18)
- src/packages/backtop/backtop.scss
- src/packages/skeleton/skeleton.scss
- src/packages/backtop/backtop.taro.tsx
- src/packages/hoverbutton/hoverbutton.taro.tsx
- src/packages/col/col.scss
- packages/nutui-taro-demo/package.json
- src/packages/tag/tag.scss
- src/utils/get-rect-by-taro.ts
- src/packages/hoverbutton/hoverbutton.scss
- src/packages/overlay/overlay.scss
- src/packages/swiper/swiper.scss
- src/utils/platform-taro.ts
- gulpfile.js
- src/packages/pulltorefresh/pulltorefresh.taro.tsx
- src/packages/input/input.scss
- src/packages/toast/toast.scss
- packages/nutui-taro-demo/scripts/taro/generate-nutui-taro.js
- scripts/rn/copy-file.js
✅ Files skipped from review due to trivial changes (4)
- src/packages/navbar/navbar.scss
- src/packages/indicator/demos/taro/demo3.tsx
- src/packages/button/button.scss
- src/packages/notify/demo.taro.tsx
🔇 Additional comments (51)
packages/nutui-taro-demo/babel.config.js (2)
Line range hint
18-23
: 项目图标替换逻辑保持不变针对 jmapp 项目的图标替换逻辑保持完整,没有受到重构的影响,这很好。
17-17
: TypeScript 转换插件配置已简化!移除了针对 React Native 环境的条件判断,使 TypeScript 转换配置更加清晰和一致。这种改变符合重构的目标,简化了构建过程。
不过,建议验证此更改对其他环境的影响:
✅ Verification successful
配置简化验证通过! ✅
经过验证,移除 React Native 环境相关的条件判断是安全的。代码库中没有其他依赖此环境配置的文件,TypeScript 转换插件的配置也仅在此处使用。这种简化不会对其他部分造成影响,同时提高了配置的可维护性。
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 描述:检查是否存在依赖特定 TARO_ENV 的其他配置 # 搜索可能受影响的配置文件 rg -g '*.{js,json,ts}' -l 'TARO_ENV.*rn|TARO_ENV.*jdrn' # 检查是否有其他使用 @babel/plugin-transform-typescript 的地方 rg -g '*.{js,json}' '@babel/plugin-transform-typescript'Length of output: 229
src/packages/swipe/swipe.taro.tsx (2)
15-15
: 导入语句的更改符合重构目标移除了
harmonyAndRn
的导入,保留了harmony
的导入,这与移除 rntaro 环境的特殊处理的目标一致。
268-268
: 平台检测逻辑简化将条件检查从同时检查两个平台简化为仅检查 harmony 平台,这样的改动:
- 使代码更加清晰
- 符合移除 rntaro 特殊处理的重构目标
不过建议验证这个改动是否会影响到其他平台的用户体验。
✅ Verification successful
平台检测逻辑变更验证完成
经过验证,此次简化是安全的:
- harmony() 在组件库中被广泛使用,是标准的平台检测方式
- 相关代码仍然保持了对 harmony 平台的必要特殊处理
- 变更符合移除 rntaro 相关代码的重构方向
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 搜索可能受影响的相关组件 rg -l "harmony\(\)" src/packages/Length of output: 2505
Script:
#!/bin/bash # Search for harmony() function implementation ast-grep --pattern 'function harmony() { $$$ }' # Check platform-specific logic in swipe component rg -A 5 "harmony\(\)" src/packages/swipe/swipe.taro.tsxLength of output: 500
packages/nutui-taro-demo/src/app.ts (1)
4-6
: 需要验证无条件导入的影响移除了环境检查后直接导入样式和触摸模拟器,这可能会影响应用的性能和包大小。建议验证这些导入在所有目标环境中是否都必要。
✅ Verification successful
无条件导入验证结果正常
经过验证,这些导入是应用的核心依赖项,在多个主要入口文件和组件中都有使用。移除条件导入是安全的,不会对应用性能造成负面影响。
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查这些导入项在其他组件中的使用情况 rg -l "reset.scss|nutui.react.scss.taro|touch-emulator" --type ts --type tsxLength of output: 106
Script:
#!/bin/bash # Search in .ts files echo "=== Searching in .ts files ===" rg -l "reset.scss|nutui.react.scss.taro|touch-emulator" --type ts # Search in all files (to catch .tsx) echo "=== Searching in all files ===" rg -l "reset.scss|nutui.react.scss.taro|touch-emulator" # Check package dependencies echo "=== Package Dependencies ===" cat package.json | grep -A 5 -B 5 "@nutui/touch-emulator" # Check if these are the only style imports echo "=== All style imports ===" rg -l "\.scss" --type tsLength of output: 3216
src/packages/divider/demos/taro/demo5.tsx (1)
14-14
: 代码简化符合预期移除了平台特定的条件判断,使用固定的虚线样式,这样的改动使代码更加清晰和统一。
src/packages/avatar/demos/taro/demo5.tsx (1)
Line range hint
10-19
: 需要确认条件渲染的必要性目前在 harmony 环境下完全不渲染组件,这可能会影响用户体验。建议:
- 确认是否真的需要在 harmony 环境下隐藏此组件
- 考虑提供替代的展示方式而不是返回 null
另外,代码中存在被注释的 Badge 相关代码,这些注释可能表明未完成的改动。
建议清理这些注释掉的代码,如果这些功能将来需要,可以通过版本控制系统找回。
src/packages/range/demos/taro/demo9.tsx (1)
4-4
: 代码重构符合预期,建议确认跨平台兼容性代码变更移除了React Native相关的特殊处理,使用
harmony()
替代了harmonyAndRn()
,简化了平台检测逻辑。这个改动符合重构目标,但需要确保在所有目标平台上的样式表现一致。运行以下脚本验证其他使用相同模式的组件:
Also applies to: 8-16
✅ Verification successful
代码变更验证完成,确认安全性
经过详细验证,从
harmonyAndRn
到harmony
的重构是安全的:
harmony
函数实现清晰,专注于鸿蒙平台检测- 所有使用都正确限定在Taro特定文件中
- 代码分支逻辑完整,平台适配合理
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 搜索其他可能受影响的组件 rg -l "harmonyAndRn|harmony.*\?" src/packages/Length of output: 1401
Script:
#!/bin/bash # Check the implementation of harmony utility rg -A 5 "export.*harmony" src/utils/ # Check actual usage patterns ast-grep --pattern 'harmony($$$)'Length of output: 8126
src/packages/avatar/demos/taro/demo7.tsx (1)
4-4
: 建议统一样式处理方式与demo4中的情况类似,这里也存在相同的样式条件判断模式。建议采用相同的优化方案,使用统一的样式常量或对象映射。
请参考demo4中提供的优化建议,使用相同的方式处理样式值,以保持代码的一致性。
Also applies to: 13-14
src/packages/hoverbutton/demos/taro/demo3.tsx (1)
8-8
: 验证平台检测逻辑的变更影响将
harmonyAndRn
替换为harmony
可能会影响在 React Native 环境下的行为。需要确认:
- 这是否符合移除 rntaro 环境支持的预期
- 是否需要为 React Native 用户提供迁移指南
Also applies to: 14-14
✅ Verification successful
确认平台检测逻辑变更符合预期
经过验证,将
harmonyAndRn
替换为harmony
是符合预期的变更:
- 代码库中已完全移除了
harmonyAndRn
相关代码harmony()
函数专注于鸿蒙系统平台检测- 这个变更与移除 rntaro 环境支持的目标一致
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查其他文件中是否还有 harmonyAndRn 的使用 rg "harmonyAndRn" --type tsxLength of output: 56
Script:
#!/bin/bash # 使用更通用的搜索方式查找相关代码 echo "=== 搜索 harmonyAndRn 的使用 ===" rg "harmonyAndRn" -t ts -t tsx -t js -t jsx echo -e "\n=== 搜索 harmony 的使用 ===" rg "harmony" -t ts -t tsx -t js -t jsx echo -e "\n=== 查找平台相关的工具文件 ===" fd "platform" -e ts -e tsx -e js -e jsxLength of output: 386
Script:
#!/bin/bash echo "=== 检查平台工具文件内容 ===" cat src/utils/platform-taro.ts echo -e "\n=== 使用基础 grep 搜索 ===" grep -r "harmonyAndRn" . grep -r "harmony" .Length of output: 27504
src/packages/hoverbutton/demos/taro/demo4.tsx (1)
8-8
: 确认样式兼容性
移除了
Taro
导入并简化了定位样式,请确认:
position: 'fixed'
在所有目标平台上都能正常工作- 是否需要为特定平台提供备选样式方案
建议添加注释说明样式变更的原因,以便后续维护。
Also applies to: 17-17
src/packages/range/demos/taro/demo8.tsx (1)
5-5
: 导入和使用更改符合重构目标代码变更移除了对 rntaro 环境的特殊处理,使用更简化的
harmony
函数替代了harmonyAndRn
。这个改动与重构目标保持一致。请验证在所有支持的平台上的样式表现是否仍然正确。
Also applies to: 9-9
✅ Verification successful
代码变更验证完成,确认安全
经过验证,确认以下几点:
harmonyAndRn
已在整个代码库中完全移除- 所有组件已统一使用
harmony
进行平台适配- 样式逻辑保持不变,仍然正确处理平台差异
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查其他组件是否仍在使用 harmonyAndRn rg "harmonyAndRn" --type tsLength of output: 27
Script:
#!/bin/bash # 检查harmony的导入和使用模式 rg "import.*harmony.*from.*platform" -g "*.{ts,tsx}" # 检查是否存在其他平台相关的导入 rg "import.*from.*['\"]@/utils/platform" -g "*.{ts,tsx}" # 检查demo8.tsx的完整内容以了解具体变更 cat src/packages/range/demos/taro/demo8.tsxLength of output: 12624
src/packages/range/demos/taro/demo3.tsx (1)
5-9
: 全局验证重构完整性请运行以下脚本以确保完全移除了 rntaro 相关的代码:
✅ Verification successful
重构验证完成:rntaro 相关代码已完全移除
经过全面检查,确认代码库中已完全移除 rntaro 相关逻辑。harmony 函数现在仅包含鸿蒙系统相关的环境检测,符合重构要求。
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查是否还存在 rntaro 相关的代码 echo "检查 rntaro 相关引用..." rg -i "rntaro" --type ts echo "检查 harmonyAndRn 的使用..." rg "harmonyAndRn" --type ts echo "检查 platform-taro.ts 文件的导出..." rg "export.*harmony" src/utils/platform-taro.tsLength of output: 300
Script:
#!/bin/bash # 检查 harmony 函数的具体实现 echo "检查 harmony 函数实现..." ast-grep --pattern 'export const harmony = () => { $$$ }' echo "检查其他平台相关的工具函数..." rg -g "src/**/*platform*.{ts,tsx}" -l ""Length of output: 640
src/packages/range/demos/taro/demo10.tsx (1)
4-4
: 代码更改符合重构目标这些更改是移除 React Native 平台特定处理的重构工作的一部分,保持了原有的条件样式逻辑。
Also applies to: 8-8
src/packages/range/demos/taro/demo1.tsx (1)
5-5
: 代码更改符合重构目标这些更改是移除 React Native 平台特定处理的重构工作的一部分,保持了原有的条件样式逻辑。
Also applies to: 9-9
src/packages/swipe/demos/taro/demo9.tsx (1)
5-5
: 检查平台检测逻辑的变更影响平台检测逻辑从
harmonyAndRn
改为harmony
后,可能会影响InputNumber
组件在不同平台上的显示行为。请确认:
- 在所有目标平台上测试此更改
- 验证
InputNumber
组件的可见性符合预期运行以下脚本以检查其他组件是否一致地应用了这个更改:
Also applies to: 44-44
✅ Verification successful
平台检测逻辑变更验证完成
经过验证,从
harmonyAndRn
改为harmony
的变更是正确的,且与代码库中其他组件的平台检测模式保持一致。条件渲染逻辑的调整(!harmony()
)也符合代码库中的通用实践。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查其他使用 InputNumber 组件的文件是否也更新了条件判断 rg -l "InputNumber.*harmony" src/Length of output: 35
Script:
#!/bin/bash # 搜索所有 InputNumber 组件的使用 echo "=== InputNumber 组件使用 ===" rg "InputNumber" src/ -l # 检查 harmony 相关导入 echo -e "\n=== harmony 导入模式 ===" rg "import.*harmony" src/ -l # 检查条件渲染模式 echo -e "\n=== 条件渲染逻辑 ===" rg "(!harmony|harmony\(\))" src/ -A 2Length of output: 24174
src/packages/pulltorefresh/demo.taro.tsx (1)
10-10
: 验证禁用状态演示的条件渲染将条件判断从
harmonyAndRn
更改为harmony
后,需要确认:
- 禁用状态的演示部分在正确的平台上显示/隐藏
- 用户体验保持一致性
建议:
- 添加注释说明在哪些平台下隐藏此演示
- 考虑是否需要为不支持的平台提供替代的演示内容
Also applies to: 43-48
src/packages/range/demos/taro/demo12.tsx (1)
5-5
: 代码更改符合重构目标!导入和使用
harmony
替代harmonyAndRn
的更改保持了组件功能的同时简化了平台检测逻辑。Also applies to: 9-9
src/packages/divider/demo.taro.tsx (1)
42-43
: 优化了组件渲染逻辑!移除了环境检查条件,使虚线分割线组件始终渲染,提高了代码的可维护性。
src/packages/indicator/demo.taro.tsx (1)
58-58
: 简化了指示器组件的渲染逻辑!移除了React Native环境的条件判断,使Demo3组件始终渲染,保持了代码的一致性。
src/packages/empty/demo.taro.tsx (1)
51-52
: 保持了代码重构的一致性!移除了React Native相关的条件渲染,使图片类型演示组件始终可见,与其他组件的重构保持一致。
src/packages/indicator/demos/taro/demo2.tsx (1)
5-5
: 优化:统一平台检测方法代码变更符合重构目标,简化了平台检测逻辑。
Also applies to: 13-13
src/packages/swipe/demos/taro/demo2.tsx (1)
5-5
: 平台检测逻辑变更需要验证平台检测从
harmonyAndRn
改为harmony
可能会改变组件的渲染行为。请确保在所有支持的平台上验证Del
图标的显示是否符合预期。运行以下脚本以检查其他组件中是否存在类似的平台检测逻辑:
Also applies to: 21-21
✅ Verification successful
平台检测逻辑变更已验证
经过验证,从
harmonyAndRn
改为harmony
的变更是整个代码库的统一调整,其他组件 demo 都采用相同的平台检测方式。这个改动符合预期,不会产生负面影响。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 搜索其他可能受影响的组件 rg -l "harmonyAndRn|harmony" "src/packages/*/demos/taro/"Length of output: 126
Script:
#!/bin/bash # 使用fd查找所有taro demo文件 fd -t f . src/packages -e tsx -e ts | grep '/demos/taro/' | xargs rg -l "harmonyAndRn|harmony"Length of output: 1573
Script:
#!/bin/bash # 检查实际的平台检测使用方式 rg "harmony(AndRn)?\(" src/packages/*/demos/taro/ -A 2 -B 2Length of output: 21178
src/packages/swiper/demos/taro/demo5.tsx (1)
6-6
: 导航箭头的显示逻辑需要验证导航箭头的显示条件从
harmonyAndRn
改为harmony
可能会影响用户体验。建议:
- 验证在所有目标平台上箭头的显示/隐藏是否正确
- 考虑为不显示箭头的平台提供替代的导航方式
Also applies to: 66-66, 69-69
✅ Verification successful
导航箭头的显示逻辑验证完成
经过验证,当前实现是正确的:
- H5版本始终显示导航箭头,符合Web端交互习惯
- Taro版本在鸿蒙平台自动隐藏箭头,适配触控交互模式
- 平台检测逻辑完善,包含了所有鸿蒙相关环境
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查其他轮播组件中的导航控件实现 rg -A 3 "ArrowLeft|ArrowRight" "src/packages/swiper/"Length of output: 1623
Script:
#!/bin/bash # Check harmony platform detection implementation rg -A 5 "export.*harmony" "src/utils/"Length of output: 357
src/packages/progress/demo.taro.tsx (1)
13-13
: 延迟加载功能的可用性变更将条件判断从
harmonyAndRn
改为harmony
会影响 Demo8(延迟加载)功能的可用性。需要注意:
- 确认此功能在哪些平台上应该可用
- 考虑为不支持的平台提供替代实现
建议添加注释说明功能限制的原因,以便其他开发者理解。
+ {/* Demo8 仅在非 Harmony 平台上可用,因为... */} {!harmony() && (
Also applies to: 68-73
✅ Verification successful
延迟加载功能在鸿蒙平台的限制是有意为之
将条件判断从
harmonyAndRn
改为harmony
是合理的平台适配调整:
- 代码库中大量使用
harmony()
来管理平台特定功能- 延迟加载功能目前仅在非鸿蒙平台上支持
- 这种平台限制是经过设计的
建议添加注释说明功能限制的原因:
+ {/* 延迟加载功能暂不支持鸿蒙平台 */} {!harmony() && (
🏁 Scripts executed
The following scripts were executed for the analysis:
Error: No shell scripts found
Script:
#!/bin/bash # Search for Demo8 component usage and platform checks echo "=== Searching for Demo8 component usage ===" rg "Demo8" -A 3 -B 3 echo -e "\n=== Checking platform utility implementations ===" fd "platform.*\.(ts|tsx|js|jsx)$" --exec cat {} echo -e "\n=== Looking for harmony related imports and usage ===" rg "harmony" -A 2 -B 2 echo -e "\n=== Checking for platform-specific documentation ===" fd "README" --exec cat {}Length of output: 68791
Script:
#!/bin/bash # Check platform utility implementation and usage echo "=== Checking platform utility implementation ===" rg -p "export.*harmony.*=" --type ts --type tsx echo -e "\n=== Looking for similar platform checks ===" rg "harmony\(\)" -B 2 -A 2 echo -e "\n=== Checking for platform-specific comments ===" rg "\/\*.*harmony.*\*\/" --type ts --type tsxLength of output: 31067
src/packages/range/demos/taro/demo13.tsx (1)
5-5
: 样式计算逻辑变更可能影响布局将样式条件判断从
harmonyAndRn
改为harmony
可能会影响组件在不同平台上的外观:
- cellStyle 的 padding 计算方式变更
- verticalStyle 的尺寸和 padding 计算方式变更
建议:
- 检查所有受支持平台上的布局表现
- 考虑使用统一的样式计算方法
Also applies to: 9-19, 21-31
src/packages/swiper/demo.taro.tsx (1)
16-16
: 导入和条件渲染逻辑的更改符合重构目标代码变更移除了对 rntaro 环境的特殊处理,使用
harmony
替代harmonyAndRn
,简化了平台检测逻辑。条件渲染保持了相同的功能,代码更加清晰。Also applies to: 73-78
src/packages/indicator/demos/taro/demo4.tsx (1)
4-4
: 样式条件判断逻辑得到简化通过使用
harmony
替代harmonyAndRn
,样式条件判断变得更加简洁。功能保持不变,同时减少了代码复杂度。Also applies to: 14-14
src/packages/range/demos/taro/demo11.tsx (2)
4-4
: Cell 样式逻辑简化移除了 RN 相关的样式处理,仅保留 harmony 平台的特殊处理,使代码更加清晰。
Also applies to: 9-18
67-69
: 文本行高样式统一统一使用
pxTransform(18)
作为行高,移除了平台特定的样式差异。src/packages/hoverbuttonitem/hoverbuttonitem.taro.tsx (3)
5-5
: 原生属性处理逻辑优化使用
isHarmony
替代了之前的isNative
,简化了平台检测逻辑。Also applies to: 34-35
79-81
: 类名条件判断更新更新了类名条件判断逻辑,移除了 RN 相关的类名处理,使代码更加清晰。
45-45
: 触摸事件处理逻辑简化移除了 RN 相关的处理,仅保留 harmony 平台的触摸状态管理。
请验证在 harmony 平台上的触摸反馈是否正常工作。以下脚本可以帮助检查相关的触摸事件处理:
Also applies to: 49-49
✅ Verification successful
触摸事件处理验证完成
代码实现完整且合理:
- 通过
isTouchStart
状态正确管理触摸反馈- 使用 CSS 类名和动态颜色提供视觉反馈
- 包含了必要的触摸事件处理(开始、结束、取消)
- 针对 harmony 平台的特定优化已正确实现
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查其他组件中是否存在类似的触摸事件处理模式 ast-grep --pattern $'onTouchStart={$_} onTouchEnd={$_} onTouchCancel={$_}'Length of output: 75
Script:
#!/bin/bash # 搜索 hoverbuttonitem 相关文件 fd hoverbuttonitem --type f --exec cat {} \; # 搜索 touchStart 相关代码 rg "touchStart|setTouchStart" -A 2 # 搜索平台特定实现 rg "isHarmony.*touch" -A 2Length of output: 11179
src/packages/button/demo.taro.tsx (1)
16-16
: 平台检测逻辑优化代码变更简化了平台检测逻辑,从复合检测(
harmonyAndRn
)改为单一的 HarmonyOS 检测(harmony
)。这个改动使代码更加清晰和专注。Also applies to: 61-61
src/packages/overlay/overlay.taro.tsx (1)
8-8
: 平台相关导入更新从复合平台检测更改为专注于 HarmonyOS 的检测,符合重构目标。
src/packages/hoverbutton/demo.taro.tsx (1)
12-12
: 平台检测逻辑已更新导入和使用已从
harmonyAndRn
更改为harmony
,这符合移除 RN 特定处理的目标。Also applies to: 15-15
src/packages/button/button.taro.tsx (2)
170-170
: 验证条件渲染逻辑确保在非 harmony 环境下样式的正确应用。建议添加测试用例覆盖不同环境下的样式渲染。
✅ Verification successful
条件渲染逻辑验证完成
经过验证,当前的条件渲染实现是合理的:
- harmony 环境下应用 getContStyle 自定义样式
- 非 harmony 环境下回退到空样式对象
- 多个演示用例已经覆盖了不同环境下的样式渲染测试
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查组件在不同环境下的样式应用 rg -l "getContStyle|getStyle" src/packages/button/Length of output: 119
Script:
#!/bin/bash # Check getContStyle implementation and harmony() usage rg "getContStyle|harmony\(\)" src/packages/button/ -A 5Length of output: 6092
94-97
: 确认样式应用逻辑的正确性在 harmony 环境下设置背景色的逻辑可能会导致样式重复应用。
style.background
和style.backgroundColor
都被设置了相同的值。建议简化为:
- if (harmony()) { - style.backgroundColor = color - } - style.background = color + style.background = color✅ Verification successful
确认样式重复设置问题
代码检查结果显示在 harmony 环境下确实存在样式属性重复设置的情况。
style.backgroundColor
和style.background
被设置为相同的值,这是冗余的,因为background
属性已经包含了背景色的设置。建议采用评审意见中提供的简化方案。🏁 Scripts executed
The following scripts were executed for the analysis:
Error: No shell scripts found
Script:
#!/bin/bash # Search for similar background/backgroundColor patterns in harmony context ast-grep --pattern 'if (harmony()) { $$$ backgroundColor $$$ }' # Search for other style applications in button components rg "style\.(background|backgroundColor)" --type tsx -C 2 # Look for harmony style documentation fd "style|theme" -e md -e mdxLength of output: 190
Script:
#!/bin/bash # Search for style patterns in all relevant files rg "style\.(background|backgroundColor)" -t ts -t typescript -t tsx # Search for harmony style patterns ast-grep --pattern 'harmony()' -l | xargs rg "style\." -C 3 # Find all button component files fd "button" -e ts -e tsxLength of output: 50288
src/packages/inputnumber/inputnumber.taro.tsx (4)
9-9
: 导入优化已完成!移除了不必要的平台特定导入,仅保留必要的
harmony
函数导入,使代码更加简洁。Also applies to: 13-13
Line range hint
248-271
: 减号按钮的条件渲染逻辑已优化通过
isHarmony
判断来区分鸿蒙和其他平台的渲染逻辑,代码结构清晰。
272-285
: 输入框实现已统一移除了平台特定的输入框实现,统一使用原生 input 元素,提高了代码的可维护性。
Line range hint
288-309
: 加号按钮的条件渲染逻辑已优化与减号按钮保持一致的渲染逻辑,确保了组件行为的一致性。
src/packages/range/range.taro.tsx (4)
148-148
: 类名条件判断已优化使用
isHm
替代了之前的平台特定判断,简化了类名的条件判断逻辑。Also applies to: 153-153
Line range hint
342-367
: 触摸事件处理逻辑已优化改进了触摸事件的处理方式,但仍存在一个待解决的问题。
垂直滑动时页面会一同滑动的问题需要进一步优化,建议添加
preventDefault()
或其他阻止默认行为的方法。🧰 Tools
🪛 Biome (1.9.4)
[error] 343-343: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
526-526
: 变换样式计算已简化移除了 React Native 特定的变换计算,统一使用 CSS transform。
Also applies to: 527-529
556-556
: 事件冒泡处理已优化统一了点击事件的冒泡阻止处理。
Also applies to: 588-588
src/packages/backtop/doc.taro.md (1)
Line range hint
45-51
: 文档标题和说明已更新文档更新准确反映了当前支持的平台,并提供了清晰的使用说明。
src/packages/backtop/doc.zh-TW.md (1)
Line range hint
53-59
: 繁体中文文档已同步更新文档标题和说明已更新,与简体中文文档保持一致。
src/packages/backtop/doc.en-US.md (2)
53-53
: 文档标题更新符合重构目标!移除了 RN 相关的引用,使文档更加清晰和专注于 HarmonyOS 的支持。
73-73
: 属性描述更新准确!
scrollRes
属性描述已更新为仅针对 HarmonyOS 的用法,符合当前重构方向。package.json (1)
94-94
: 脚本路径更新符合架构调整!将 Taro 入口更新脚本从 RN 路径迁移到 harmony 路径,与移除 RN 特殊处理的目标保持一致。建议确认相关的 harmony 脚本已经完全实现所需功能。
运行以下脚本验证 harmony 相关文件的存在:
@@ -2,11 +2,11 @@ import React, { useState, useMemo } from 'react' | |||
import { View } from '@tarojs/components' | |||
import { Range, Cell /* , Toast */ } from '@nutui/nutui-react-taro' | |||
import pxTransform from '@/utils/px-transform' | |||
import { harmonyAndRn } from '@/utils/platform-taro' | |||
import { harmony } from '@/utils/platform-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.
🛠️ Refactor suggestion
建议重构重复代码
发现多个 demo 文件中存在大量重复代码:
cellStyle
的计算逻辑在所有 demo 中都相同- Toast 相关的状态管理和事件处理也很相似
建议:
- 创建自定义 hook 如
useResponsiveStyle
来处理平台相关的样式逻辑 - 将 Toast 相关逻辑抽取到可复用的组件中
// 建议的自定义 hook 实现
const useResponsiveStyle = () => {
return useMemo(() => {
return harmony()
? {
paddingTop: pxTransform(40),
paddingBottom: pxTransform(40),
paddingLeft: pxTransform(18),
paddingRight: pxTransform(18),
}
: {
padding: '40px 18px',
}
}, [])
}
Also applies to: 9-18
@@ -2,15 +2,15 @@ import React, { useState } from 'react' | |||
import { Cell, Button, Toast, Progress } from '@nutui/nutui-react-taro' | |||
import { Text } from '@tarojs/components' | |||
import pxTransform from '@/utils/px-transform' | |||
import { harmonyAndRn } from '@/utils/platform-taro' | |||
import { harmony } from '@/utils/platform-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.
确保错误提示机制的完整性
将 Toast 组件的条件渲染从 harmonyAndRn
改为 harmony
可能会影响用户体验:
- 在不显示 Toast 的平台上,需要提供替代的错误提示机制
- 进度条到达边界值(0%或100%)时的用户反馈可能缺失
建议:
- 为不支持 Toast 的平台实现替代的提示方式
- 添加注释说明错误处理的平台差异
Also applies to: 13-20
<CSSTransition | ||
nodeRef={cssRef} | ||
in={showNotify} | ||
timeout={300} | ||
classNames="fade" | ||
unmountOnExit | ||
appear | ||
position={position} | ||
id={id} | ||
> | ||
<View | ||
className={`${classes} ${className}`} | ||
style={style} | ||
onClick={clickHandle} | ||
> | ||
{children} | ||
</View> | ||
</CSSTransition> |
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.
🛠️ Refactor suggestion
建议验证 CSSTransition 属性
position
和id
不是 CSSTransition 的标准属性,可能会导致警告。- 建议将自定义属性传递给内部的 View 组件。
<CSSTransition
nodeRef={cssRef}
in={showNotify}
timeout={300}
classNames="fade"
unmountOnExit
appear
- position={position}
- id={id}
>
<View
className={`${classes} ${className}`}
style={style}
onClick={clickHandle}
+ data-position={position}
+ id={id}
>
{children}
</View>
</CSSTransition>
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
<CSSTransition | |
nodeRef={cssRef} | |
in={showNotify} | |
timeout={300} | |
classNames="fade" | |
unmountOnExit | |
appear | |
position={position} | |
id={id} | |
> | |
<View | |
className={`${classes} ${className}`} | |
style={style} | |
onClick={clickHandle} | |
> | |
{children} | |
</View> | |
</CSSTransition> | |
<CSSTransition | |
nodeRef={cssRef} | |
in={showNotify} | |
timeout={300} | |
classNames="fade" | |
unmountOnExit | |
appear | |
> | |
<View | |
className={`${classes} ${className}`} | |
style={style} | |
onClick={clickHandle} | |
data-position={position} | |
id={id} | |
> | |
{children} | |
</View> | |
</CSSTransition> |
if (!harmony()) { | ||
return Math.floor((`${percent}%`.length * 9) / 2) | ||
} | ||
if (rn()) { | ||
return `${percent}%`.length * 9 + 4 | ||
} | ||
return Math.floor((`${percent}%`.length * 9 + 4) / 2) | ||
} |
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.
🛠️ Refactor suggestion
重构样式计算逻辑
computeRight
和 computeInnerStyle
中的计算逻辑较为复杂,建议提取共用的计算逻辑以提高可维护性。
建议创建辅助函数:
const calculateTextWidth = (percent: number, isHarmony: boolean) => {
const baseWidth = `${percent}%`.length * 9
return isHarmony ? baseWidth + 4 : baseWidth
}
Also applies to: 178-183
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: 2
🔭 Outside diff range comments (1)
src/packages/range/demos/taro/demo11.tsx (1)
Line range hint
22-24
: 建议移除未使用的空对象!
buttonNativeStyle
现在返回空对象且在样式展开时使用,建议完全移除这个无用的计算:- const buttonNativeStyle = useMemo(() => { - return {} - }, []) // 在使用处也移除 style={{ position: 'absolute', // ...其他样式 - ...buttonNativeStyle, }}
🧹 Nitpick comments (23)
src/packages/notify/demos/taro/demo4.tsx (2)
46-47
: 平台特定处理的简化很好!注释和条件渲染逻辑的更新准确反映了当前的平台支持情况,删除了不必要的 RN 相关代码。建议进一步改进:
- 可以考虑将平台限制相关的注释更新为更详细的说明
- 为了提高代码可维护性,建议将这个平台检查逻辑提取到一个独立的工具函数中
- {/* HARMONY不支持bottom */} + {/* HARMONY平台不支持bottom位置,因为平台限制无法在底部显示通知 */}
Line range hint
1-56
: 建议优化状态管理方式当前的状态管理实现存在一些可以改进的地方:
changeNotify
函数中直接修改states
对象可能导致意外的副作用- 使用
Object.assign
创建新状态时没有创建深拷贝建议使用以下方式重构状态更新逻辑:
const changeNotify = ( message: string, type?: string, duration?: number, position?: string ) => { - const change = Object.assign(states, { + setStates({ + ...states, message, type, duration, position, - }) - setStates(change) + }) }src/packages/range/demos/taro/demo11.tsx (1)
Line range hint
9-18
: 样式逻辑简化提高了代码可维护性!
cellStyle
的计算逻辑已简化,仅基于harmony()
条件。建议进一步优化:
- 考虑将通用样式提取到常量
- 使用样式组合而不是完全重写
const cellStyle = useMemo(() => { + const baseStyle = { + padding: '40px 18px', + } return harmony() ? { + ...baseStyle, - paddingTop: pxTransform(40), - paddingBottom: pxTransform(40), - paddingLeft: pxTransform(18), - paddingRight: pxTransform(18), + padding: `${pxTransform(40)} ${pxTransform(18)}`, } - : { - padding: '40px 18px', - } + : baseStyle }, [])src/packages/avatar/demos/taro/demo5.tsx (1)
Line range hint
12-18
: 清理注释代码建议清理被注释的
Badge
组件代码,以提高代码可读性。如果这些功能将来需要,可以通过版本控制历史找回。src/packages/range/demos/taro/demo9.tsx (1)
4-4
: 优化平台样式逻辑使用
harmony()
替换了原有的平台检测逻辑,同时保持了不同平台的样式差异。建议考虑使用统一的样式方案,减少平台特定的样式代码。可以考虑使用 CSS-in-JS 或统一的样式变量来处理平台差异:
const baseStyle = { padding: harmony() ? `${pxTransform(40)} ${pxTransform(18)}` : '40px 18px', }Also applies to: 8-16
src/packages/avatar/demos/taro/demo7.tsx (1)
4-4
: 建议提取主题相关的样式配置目前的实现中,平台特定的颜色值直接硬编码在组件中。建议:
- 将颜色值移至主题配置文件
- 使用统一的主题变量,而不是平台特定的硬编码值
- color={`${harmony() ? '#ff0f23' : 'var(--nutui-color-primary)'}`} - background={`${harmony() ? '#ffd6e1' : 'var(--nutui-brand-2)'}`} + color={`var(--nutui-avatar-color)`} + background={`var(--nutui-avatar-background)`}Also applies to: 13-14
src/packages/range/demos/taro/demo6.tsx (1)
Line range hint
37-44
: 建议清理未使用的代码注释掉的
Toast
组件代码应该被移除,以提高代码的可维护性。如果这是一个临时的更改,建议添加 TODO 注释说明原因。src/packages/range/demos/taro/demo4.tsx (1)
Line range hint
34-41
: 建议处理注释代码建议清理注释掉的
Toast
组件代码。如果后续可能会重新启用,请添加 TODO 注释说明保留原因。src/packages/range/demos/taro/demo7.tsx (1)
5-5
: 统一平台检测并清理注释代码代码变更符合重构目标,使用
harmony
替代harmonyAndRn
。建议处理被注释的 Toast 组件代码,如果确定不需要可以完全移除,避免保留未使用的代码。
Also applies to: 9-9
src/packages/range/demos/taro/demo3.tsx (1)
5-5
: 完善平台兼容性文档代码变更符合重构方向,移除了 React Native 的特殊处理逻辑。
建议更新组件文档,明确说明当前支持的平台类型和各平台的样式差异。
Also applies to: 9-9
src/packages/avatar/demos/taro/demo6.tsx (1)
4-4
: 统一使用 harmony 检测并优化样式变量代码更新移除了 RN 特定的处理,但建议考虑以下优化:
- 可以将重复的条件判断提取为常量
- 考虑使用 useMemo 缓存计算结果
建议重构如下:
+const getStyles = () => { + const isHarmony = harmony() + return { + color: isHarmony ? '#ff0f23' : 'var(--nutui-color-primary)', + background: isHarmony ? '#ffd6e1' : 'var(--nutui-brand-2)' + } +} +const styles = useMemo(getStyles, []) -color={`${harmony() ? '#ff0f23' : 'var(--nutui-color-primary)'}`} -background={`${harmony() ? '#ffd6e1' : 'var(--nutui-brand-2)'}`} +color={styles.color} +background={styles.background}Also applies to: 14-15, 26-27
src/packages/range/demos/taro/demo1.tsx (1)
Line range hint
44-52
: 清理注释代码建议移除被注释的 Toast 组件代码。保留注释掉的代码会增加维护负担,如果需要保留相关信息,建议通过版本控制系统追踪。
- {/* <Toast - type="text" - visible={show} - content={msg} - onClose={() => { - setShow(false) - }} - /> */}src/packages/progress/demos/taro/demo7.tsx (1)
5-5
: Toast 组件的条件渲染逻辑正确
harmony
的使用正确实现了平台特定的 Toast 显示逻辑。建议考虑将 Toast 相关的状态(
show
和toastMsg
)也包含在条件渲染中,这样可以避免在不支持的平台上维护不必要的状态:const Demo7 = () => { const [value, setValue] = useState(0) - const [show, setShow] = useState(false) - const [toastMsg, setToastMsg] = useState('') + const [show, setShow] = useState(false) + const [toastMsg, setToastMsg] = useState('')Also applies to: 13-21
src/packages/popup/demos/taro/demo3.tsx (1)
4-4
: 条件渲染逻辑可以简化虽然当前实现是正确的,但可以简化条件渲染的写法。
建议简化条件渲染的写法:
- {harmony() ? null : ( - <> - <Cell - title="自定义图标" - onClick={() => { - setShowIconDefine(true) - }} - /> - </> - )} + {!harmony() && ( + <Cell + title="自定义图标" + onClick={() => { + setShowIconDefine(true) + }} + /> + )}Also applies to: 26-34
src/packages/image/demo.taro.tsx (1)
14-14
: 平台特定功能处理保持一致
- 移除了
harmonyAndRn
导入,使用harmony
进行平台检测- 懒加载功能的条件渲染逻辑得到简化,同时保持了原有的平台兼容性处理
建议:
- 考虑添加注释说明为什么这些功能在和谐系统上不可用
Also applies to: 61-66
src/packages/skeleton/demo.taro.tsx (1)
13-13
: 骨架屏组件平台适配更新合理
- 平台检测逻辑更新符合重构目标
- 圆角风格演示的条件渲染保持了合理的平台兼容性处理
建议:
- 添加注释说明圆角风格在和谐系统上的限制原因
Also applies to: 56-63
src/packages/indicator/demos/taro/demo4.tsx (1)
Line range hint
35-45
: 建议优化阴影样式的类型定义当前代码使用
@ts-ignore
来处理阴影属性的类型问题,建议通过以下方式改进:
- 为不同平台的样式定义专门的类型接口
- 使用类型联合来处理跨平台的样式差异
src/packages/hoverbuttonitem/hoverbuttonitem.taro.tsx (1)
33-33
: 需要关注暗黑模式的实现计划代码中的 TODO 注释提到需要添加暗黑模式功能。建议创建相关任务来跟踪这个特性的实现。
是否需要我帮助创建一个 GitHub issue 来跟踪暗黑模式的实现?
src/packages/button/button.taro.tsx (1)
94-94
: 优化条件样式处理平台检测逻辑从
harmonyAndRn()
更新为harmony()
,保持了相同的功能但代码更简洁。建议添加注释说明这些平台特定样式的用途。if (harmony()) { + // 为鸿蒙系统设置特定的背景色样式 style.backgroundColor = color }
Also applies to: 170-170
src/packages/avatar/avatar.taro.tsx (1)
15-15
: 简化头像组件的平台特定逻辑平台检测逻辑得到简化,同时保持了组件的原有功能。建议:
- 添加注释说明默认尺寸的平台差异原因
- 考虑使用常量定义默认尺寸值
+// 平台特定的默认尺寸常量 +const HARMONY_DEFAULT_SIZE = '40' +const DEFAULT_SIZE = '' + const defaultProps = { ...ComponentDefaults, - size: harmony() ? '40' : '', + size: harmony() ? HARMONY_DEFAULT_SIZE : DEFAULT_SIZE,Also applies to: 36-36, 97-97
src/packages/progress/progress.taro.tsx (2)
9-9
: 优化进度条组件的平台检测逻辑平台检测逻辑更新为使用
harmony()
和web()
,使代码更清晰。建议添加注释说明不同平台的处理差异。useEffect(() => { if (web()) { handleWebObserver() + // 鸿蒙平台不需要特殊的观察者处理 } else if (!harmony()) { handleOtherObserver() } }, [])
Also applies to: 158-160
169-173
: 改进文本计算逻辑计算逻辑中的魔法数字(9, 4)应该被提取为命名常量,以提高代码可维护性。
+// 文本计算的常量 +const TEXT_CHAR_WIDTH = 9 +const HARMONY_PADDING = 4 + const computeRight = () => { if (children) { return 0 } if (!harmony()) { - return Math.floor((`${percent}%`.length * 9) / 2) + return Math.floor((`${percent}%`.length * TEXT_CHAR_WIDTH) / 2) } - return Math.floor((`${percent}%`.length * 9 + 4) / 2) + return Math.floor((`${percent}%`.length * TEXT_CHAR_WIDTH + HARMONY_PADDING) / 2) }Also applies to: 178-183
src/packages/swipe/swipe.taro.tsx (1)
Line range hint
268-285
: 优化平台相关的事件处理通过 harmony() 检查简化了事件监听器的添加逻辑,使代码更加清晰。建议添加注释说明为什么在 harmony 环境下不需要添加事件监听器。
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (82)
gulpfile.js
(0 hunks)package.json
(1 hunks)packages/nutui-taro-demo/babel.config.js
(1 hunks)packages/nutui-taro-demo/config/index.js
(1 hunks)packages/nutui-taro-demo/package.json
(0 hunks)packages/nutui-taro-demo/scripts/taro/generate-nutui-taro.js
(0 hunks)packages/nutui-taro-demo/src/app.ts
(1 hunks)scripts/rn/copy-file.js
(0 hunks)src/packages/avatar/avatar.taro.tsx
(3 hunks)src/packages/avatar/demos/taro/demo4.tsx
(1 hunks)src/packages/avatar/demos/taro/demo5.tsx
(1 hunks)src/packages/avatar/demos/taro/demo6.tsx
(3 hunks)src/packages/avatar/demos/taro/demo7.tsx
(2 hunks)src/packages/backtop/backtop.scss
(0 hunks)src/packages/backtop/backtop.taro.tsx
(0 hunks)src/packages/backtop/doc.en-US.md
(2 hunks)src/packages/backtop/doc.taro.md
(1 hunks)src/packages/backtop/doc.zh-TW.md
(1 hunks)src/packages/button/button.scss
(2 hunks)src/packages/button/button.taro.tsx
(3 hunks)src/packages/button/demo.taro.tsx
(2 hunks)src/packages/cell/demos/taro/demo6.tsx
(4 hunks)src/packages/col/col.scss
(0 hunks)src/packages/divider/demo.taro.tsx
(1 hunks)src/packages/divider/demos/taro/demo5.tsx
(1 hunks)src/packages/empty/demo.taro.tsx
(1 hunks)src/packages/empty/empty.taro.tsx
(1 hunks)src/packages/hoverbutton/demo.taro.tsx
(2 hunks)src/packages/hoverbutton/demos/taro/demo3.tsx
(1 hunks)src/packages/hoverbutton/demos/taro/demo4.tsx
(2 hunks)src/packages/hoverbutton/hoverbutton.scss
(0 hunks)src/packages/hoverbutton/hoverbutton.taro.tsx
(0 hunks)src/packages/hoverbuttonitem/hoverbuttonitem.taro.tsx
(4 hunks)src/packages/image/demo.taro.tsx
(2 hunks)src/packages/image/image.taro.tsx
(1 hunks)src/packages/indicator/demo.taro.tsx
(1 hunks)src/packages/indicator/demos/taro/demo2.tsx
(1 hunks)src/packages/indicator/demos/taro/demo3.tsx
(1 hunks)src/packages/indicator/demos/taro/demo4.tsx
(2 hunks)src/packages/input/input.scss
(0 hunks)src/packages/inputnumber/inputnumber.taro.tsx
(4 hunks)src/packages/navbar/navbar.scss
(1 hunks)src/packages/notify/demo.taro.tsx
(1 hunks)src/packages/notify/demos/taro/demo4.tsx
(2 hunks)src/packages/notify/notify.taro.tsx
(1 hunks)src/packages/overlay/overlay.scss
(0 hunks)src/packages/overlay/overlay.taro.tsx
(2 hunks)src/packages/popup/demo.taro.tsx
(2 hunks)src/packages/popup/demos/taro/demo3.tsx
(2 hunks)src/packages/progress/demo.taro.tsx
(2 hunks)src/packages/progress/demos/taro/demo2.tsx
(1 hunks)src/packages/progress/demos/taro/demo7.tsx
(1 hunks)src/packages/progress/progress.taro.tsx
(3 hunks)src/packages/pulltorefresh/demo.taro.tsx
(2 hunks)src/packages/pulltorefresh/pulltorefresh.taro.tsx
(0 hunks)src/packages/range/demos/taro/demo1.tsx
(1 hunks)src/packages/range/demos/taro/demo10.tsx
(1 hunks)src/packages/range/demos/taro/demo11.tsx
(2 hunks)src/packages/range/demos/taro/demo12.tsx
(1 hunks)src/packages/range/demos/taro/demo13.tsx
(2 hunks)src/packages/range/demos/taro/demo2.tsx
(1 hunks)src/packages/range/demos/taro/demo3.tsx
(1 hunks)src/packages/range/demos/taro/demo4.tsx
(1 hunks)src/packages/range/demos/taro/demo5.tsx
(1 hunks)src/packages/range/demos/taro/demo6.tsx
(1 hunks)src/packages/range/demos/taro/demo7.tsx
(1 hunks)src/packages/range/demos/taro/demo8.tsx
(1 hunks)src/packages/range/demos/taro/demo9.tsx
(1 hunks)src/packages/range/range.taro.tsx
(6 hunks)src/packages/skeleton/demo.taro.tsx
(2 hunks)src/packages/skeleton/skeleton.scss
(0 hunks)src/packages/swipe/demos/taro/demo2.tsx
(2 hunks)src/packages/swipe/demos/taro/demo9.tsx
(2 hunks)src/packages/swipe/swipe.taro.tsx
(2 hunks)src/packages/swiper/demo.taro.tsx
(2 hunks)src/packages/swiper/demos/taro/demo5.tsx
(2 hunks)src/packages/swiper/swiper.scss
(0 hunks)src/packages/tag/tag.scss
(0 hunks)src/packages/toast/demo.taro.tsx
(2 hunks)src/packages/toast/toast.scss
(0 hunks)src/utils/get-rect-by-taro.ts
(0 hunks)src/utils/platform-taro.ts
(0 hunks)
⛔ Files not processed due to max files limit (1)
- src/utils/px-transform.ts
💤 Files with no reviewable changes (18)
- src/packages/swiper/swiper.scss
- src/packages/backtop/backtop.scss
- src/packages/hoverbutton/hoverbutton.taro.tsx
- src/packages/col/col.scss
- src/packages/overlay/overlay.scss
- src/packages/hoverbutton/hoverbutton.scss
- src/utils/get-rect-by-taro.ts
- src/packages/backtop/backtop.taro.tsx
- src/packages/tag/tag.scss
- src/packages/input/input.scss
- src/packages/skeleton/skeleton.scss
- packages/nutui-taro-demo/package.json
- src/packages/toast/toast.scss
- src/utils/platform-taro.ts
- packages/nutui-taro-demo/scripts/taro/generate-nutui-taro.js
- gulpfile.js
- scripts/rn/copy-file.js
- src/packages/pulltorefresh/pulltorefresh.taro.tsx
✅ Files skipped from review due to trivial changes (5)
- src/packages/backtop/doc.taro.md
- src/packages/button/button.scss
- src/packages/indicator/demos/taro/demo3.tsx
- src/packages/navbar/navbar.scss
- src/packages/backtop/doc.zh-TW.md
🔇 Additional comments (54)
src/packages/notify/demos/taro/demo4.tsx (1)
3-3
: 导入语句的更改符合重构目标!将
harmonyAndRn
改为harmony
的修改符合移除特定平台处理的重构目标。src/packages/range/demos/taro/demo11.tsx (2)
4-4
: 导入声明简化符合重构目标!删除了
rn
和harmonyAndRn
的导入,仅保留harmony
,这符合移除 RN 特殊处理的重构目标。
67-67
: 文本样式统一使用 pxTransform!行高现在统一使用
pxTransform(18)
,这是一个好的改进。确保所有尺寸都使用pxTransform
进行转换,以保持一致性。packages/nutui-taro-demo/src/app.ts (1)
4-6
: 请验证样式导入的兼容性移除 RN 环境检查符合重构目标,但建议确认以下几点:
- 确保 reset.scss 和 nutui.react.scss.taro 在所有环境下都能正常工作
- 验证这些样式文件不会与其他样式产生冲突
以下脚本可以帮助验证样式文件的引用:
src/packages/progress/demos/taro/demo2.tsx (1)
3-3
: 平台检测逻辑简化导入和条件判断已更新为仅使用
harmony()
函数,这样简化了平台检测逻辑。确保在所有支持的平台上都能正确显示进度条样式。请验证在非 harmony 环境下是否正确应用了默认样式:
Also applies to: 10-11
✅ Verification successful
平台检测逻辑验证完成
经过验证,所有进度条组件相关文件都已统一使用
harmony()
进行平台检测,非 harmony 环境下会正确应用默认样式。代码更改保持一致性,没有遗留特殊平台处理逻辑。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查其他组件是否也进行了类似的更改 rg "harmonyAndRn" src/packages/progress/Length of output: 40
Script:
#!/bin/bash # 检查当前的 harmony 使用情况 rg "harmony\(\)" src/packages/progress/ -A 2 # 检查是否还有其他平台相关的检查 rg -i "platform|isios|isandroid" src/packages/progress/Length of output: 2177
src/packages/divider/demos/taro/demo5.tsx (1)
14-14
: 统一分割线样式移除了平台特定的样式判断,统一使用
dashed
样式,这样简化了代码并提高了一致性。src/packages/avatar/demos/taro/demo5.tsx (1)
5-5
: 平台检测逻辑更新更新为使用
harmony()
函数进行平台检测,保持了代码的一致性。Also applies to: 10-10
packages/nutui-taro-demo/babel.config.js (1)
17-17
: 配置简化:移除了 RN 环境的特殊处理TypeScript 插件配置已简化,不再根据 TARO_ENV 环境变量进行条件判断。这样的改动使配置更加清晰和统一。
src/packages/avatar/demos/taro/demo4.tsx (1)
4-4
: 验证平台检测功能完整性将
harmonyAndRn
替换为harmony
后,需要确保:
- 所有原有的平台检测场景都得到正确处理
- 样式在不同平台下的表现保持一致
Also applies to: 11-11, 15-16
✅ Verification successful
平台检测功能验证完成
经过验证,
harmony
函数实现完整且可靠:
- 正确使用
Taro.getEnv()
进行平台检测- 覆盖了所有鸿蒙相关平台类型
- 在 demo 中的条件样式应用合理
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查是否有遗漏的 harmonyAndRn 调用 rg "harmonyAndRn" src/Length of output: 22
Script:
#!/bin/bash # Check harmony function implementation ast-grep --pattern 'export const harmony = $_' # Check platform detection patterns in the demo file cat src/packages/avatar/demos/taro/demo4.tsx # Look for other platform-related utilities rg -g "platform*.{ts,tsx}" "export"Length of output: 1229
src/packages/range/demos/taro/demo2.tsx (1)
4-4
: 确保样式兼容性在移除 RN 相关逻辑后,建议:
- 确认
harmony()
返回值与原有逻辑保持一致- 验证组件在所有支持平台上的样式表现
考虑将平台特定的样式逻辑抽取到统一的样式配置中,以提高代码的可维护性。
Also applies to: 8-8
src/packages/hoverbutton/demos/taro/demo3.tsx (1)
8-8
: 代码变更符合重构目标!将
harmonyAndRn
替换为harmony
的修改简化了平台检测逻辑,同时保持了组件的原有功能。Also applies to: 14-14
src/packages/hoverbutton/demos/taro/demo4.tsx (1)
8-8
: 样式实现合理!使用
pxTransform
和固定定位的实现方式符合最佳实践,确保了跨平台的一致性。Also applies to: 17-22
src/packages/range/demos/taro/demo6.tsx (1)
5-5
: 平台检测逻辑优化合理!使用
harmony
替代harmonyAndRn
简化了条件判断,同时保持了不同平台下的样式适配。Also applies to: 9-17
src/packages/range/demos/taro/demo4.tsx (1)
5-5
: 代码修改保持一致性!与其他文件保持一致的修改方式,使用
harmony
函数统一处理平台差异,值得肯定。Also applies to: 9-17
src/packages/range/demos/taro/demo8.tsx (1)
5-5
: 平台检测逻辑简化代码变更移除了对 React Native 的特殊处理,使用
harmony
替代harmonyAndRn
进行平台检测,这样的改动使代码更加清晰和统一。建议验证在所有支持的平台上样式是否仍然正确渲染。
Also applies to: 9-9
✅ Verification successful
平台检测更改已完全迁移
代码库中已完全移除
harmonyAndRn
,统一使用harmony
进行平台检测。此更改与整个代码库的重构方向一致,不会产生兼容性问题。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查其他组件是否还在使用 harmonyAndRn rg "harmonyAndRn" --type tsxLength of output: 56
Script:
#!/bin/bash # 使用正确的文件模式搜索 rg "harmonyAndRn" -g "*.{ts,tsx}" # 同时检查 harmony 的使用情况,以确认迁移模式 rg "harmony[^A]" -g "*.{ts,tsx}"Length of output: 14105
src/packages/range/demos/taro/demo5.tsx (1)
5-5
: 保持一致的平台检测方案此更改与其他 demo 文件保持一致,统一使用
harmony
进行平台检测。代码改动简洁明确,没有引入新的复杂性。Also applies to: 9-9
src/packages/range/demos/taro/demo10.tsx (1)
4-4
: 导入和平台检测逻辑更新代码变更符合重构目标,移除了对 rntaro 环境的特殊处理。样式逻辑保持不变,只是简化了平台检测机制。
建议验证在所有支持的平台上样式表现是否一致:
Also applies to: 8-8
✅ Verification successful
平台检测逻辑更新已完成验证
经过验证,所有 Range 组件相关文件已统一使用
harmony
进行平台检测,移除了harmonyAndRn
的使用。代码变更保持一致性,未发现遗漏更新的地方。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查其他组件是否还在使用 harmonyAndRn rg "harmonyAndRn" src/packages/range/Length of output: 37
Script:
#!/bin/bash # 检查 harmony 相关导入 rg "import.*harmony" src/packages/range/ # 检查其他可能的平台检测代码 rg -i "platform|rn|taro|harmony" src/packages/range/Length of output: 14207
src/packages/notify/demo.taro.tsx (1)
30-30
: 移除了 React Native 特定的样式处理ScrollView 组件的样式得到了简化,移除了 RN 特定的条件判断,使代码更加清晰。
src/packages/range/demos/taro/demo1.tsx (1)
5-5
: 平台检测逻辑更新更改符合重构目标,使用 harmony 替换 harmonyAndRn 简化了平台检测。
Also applies to: 9-9
src/packages/swipe/demos/taro/demo9.tsx (1)
5-5
: 导入和条件渲染的更改看起来正确从
harmonyAndRn
切换到harmony
的更改符合重构目标,条件渲染逻辑保持一致。Also applies to: 44-44
src/packages/pulltorefresh/demo.taro.tsx (1)
10-10
: 条件渲染逻辑的更改正确实现
harmony
函数的使用正确,并且保持了禁用功能演示的条件渲染逻辑。Also applies to: 43-48
src/packages/range/demos/taro/demo12.tsx (1)
5-5
: 代码更改符合重构目标!将
harmonyAndRn
替换为harmony
的修改简化了平台检测逻辑,同时保持了组件的原有功能。Also applies to: 9-9
src/packages/divider/demo.taro.tsx (1)
42-43
: 优化了组件渲染逻辑!移除了环境检查条件,使虚线分割线的展示逻辑更加统一和清晰。这样的改动提高了代码的可维护性。
src/packages/indicator/demo.taro.tsx (1)
58-58
: 简化了示例渲染逻辑!移除了 React Native 环境的条件判断,使 Demo3 组件的渲染逻辑更加直观。这个改动与整体重构目标保持一致。
src/packages/empty/demo.taro.tsx (1)
51-52
: 保持了代码一致性!移除了特定环境的条件渲染,使 Demo4 的展示逻辑与其他组件保持一致。这种统一的处理方式有助于提高代码的可读性和可维护性。
src/packages/toast/demo.taro.tsx (2)
11-11
: 导入声明更新符合重构目标从
platform-taro
中移除harmonyAndRn
导入并替换为harmony
的修改符合重构方向。
Line range hint
49-54
: 条件渲染逻辑简化且保持功能一致将条件判断从
harmonyAndRn()
更新为harmony()
的修改合理,同时保留了对 break-all 特性兼容性的处理。src/packages/indicator/demos/taro/demo2.tsx (1)
5-5
: 平台检测逻辑更新合理导入和条件判断的更新保持了原有的平台特定样式逻辑,同时简化了实现。
Also applies to: 13-13
src/packages/swipe/demos/taro/demo2.tsx (1)
5-5
: 平台检测逻辑更新代码变更将
harmonyAndRn
替换为harmony
,简化了平台检测逻辑。这个改动保持了组件的核心功能,同时使代码更加简洁。Also applies to: 21-21
src/packages/swiper/demos/taro/demo5.tsx (1)
6-6
: 导航箭头的条件渲染逻辑优化平台检测逻辑从
harmonyAndRn
更新为harmony
,影响导航箭头的显示逻辑。建议验证在所有目标平台上的显示效果。运行以下脚本验证其他使用导航箭头的组件是否都已更新:
Also applies to: 66-66, 69-69
✅ Verification successful
平台检测逻辑变更验证完成
经过验证,
harmony
的使用方式与其他组件保持一致,包括 Navbar 等组件都采用相同的平台检测逻辑。代码变更符合预期,无需进一步修改。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 搜索所有使用 ArrowLeft 或 ArrowRight 组件的文件 rg -l "ArrowLeft|ArrowRight" | xargs rg "harmony()"Length of output: 1490
src/packages/progress/demo.taro.tsx (1)
13-13
: 延迟加载功能的平台兼容性更新代码更新了平台检测方式,现在使用
harmony()
来控制 Demo8(延迟加载演示)的显示。这个改动使平台检测逻辑更加统一。建议运行以下脚本验证其他类似的条件渲染逻辑:
Also applies to: 68-73
✅ Verification successful
平台检测逻辑已统一更新
经验证,代码库中的平台检测逻辑已完全统一使用
harmony()
函数。在以下组件中发现相同的实现模式:
- Image 组件
- Progress 组件
- PullToRefresh 组件
- SearchBar 组件
所有条件渲染逻辑均已更新,保持了一致性。
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查是否还有其他使用 harmonyAndRn 的条件渲染 rg "!harmony.*\s*&&\s*\("Length of output: 398
src/packages/range/demos/taro/demo13.tsx (1)
5-5
: 样式条件判断逻辑优化将样式条件判断从
harmonyAndRn
更新为harmony
,保持了原有的样式计算逻辑。建议:
- 考虑将重复的样式逻辑抽取为共用函数
- 验证在所有目标平台上的样式表现
建议将样式逻辑重构如下:
+const getResponsiveStyle = (styles) => { + return harmony() + ? Object.entries(styles).reduce((acc, [key, value]) => ({ + ...acc, + [key]: pxTransform(value), + }), {}) + : styles; +} const cellStyle = useMemo(() => { - return harmony() - ? { - paddingTop: pxTransform(40), - paddingBottom: pxTransform(40), - paddingLeft: pxTransform(18), - paddingRight: pxTransform(18), - } - : { - padding: '40px 18px', - } + return getResponsiveStyle({ + padding: harmony() ? undefined : '40px 18px', + paddingTop: harmony() ? 40 : undefined, + paddingBottom: harmony() ? 40 : undefined, + paddingLeft: harmony() ? 18 : undefined, + paddingRight: harmony() ? 18 : undefined, + }) }, [])运行以下脚本检查其他类似的样式逻辑:
Also applies to: 9-19, 21-31
src/packages/swiper/demo.taro.tsx (1)
16-16
: 代码变更正确且符合重构目标!平台检测逻辑的简化改动符合预期,不影响组件的功能表现。
Also applies to: 73-78
src/packages/indicator/demos/taro/demo4.tsx (1)
4-4
: 平台检测逻辑更新正确!样式条件判断的更新符合重构方向。
Also applies to: 14-14
src/packages/hoverbuttonitem/hoverbuttonitem.taro.tsx (1)
5-5
: 平台特定逻辑更新完整且一致!触摸事件处理和样式条件的更新都符合预期。
Also applies to: 34-34, 45-45, 49-49, 79-81
src/packages/button/demo.taro.tsx (1)
16-16
: 平台条件渲染逻辑更新正确!
open-type
功能区块的条件渲染更新符合平台检测逻辑的重构方向。建议验证在不同平台上的表现是否符合预期。
Also applies to: 61-66
✅ Verification successful
平台特性检测更新已确认无误!
open-type
特性仅在按钮组件中使用,更新不影响其他组件- 平台检测逻辑的导入方式与代码库中其他组件保持一致
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 检查其他组件中是否还有 open-type 相关的平台特定代码 # 搜索包含 open-type 的文件 rg "open-type" --type tsxLength of output: 53
Script:
#!/bin/bash # 搜索包含 open-type 的 TypeScript 和 TSX 文件 rg "open-type" -t ts # 检查平台检测相关的导入 rg "import.*harmony.*platform" -t ts # 检查条件渲染相关的代码 rg "harmony\.(isWeapp|isTaro)" -t tsLength of output: 5840
src/packages/overlay/overlay.taro.tsx (1)
8-8
: 平台检测逻辑简化导入和条件渲染逻辑的更改符合重构目标,移除了 RN 相关的特殊处理。代码更加清晰和统一。
Also applies to: 105-105
src/packages/popup/demo.taro.tsx (1)
6-6
: Demo 条件渲染逻辑优化平台检测逻辑的简化使代码更加清晰,同时保持了原有的功能完整性。
Also applies to: 99-99
src/packages/hoverbutton/demo.taro.tsx (2)
12-12
: 平台检测变量更新
isNative
变量的判断逻辑更新符合重构目标,代码更加简洁。Also applies to: 15-15
88-88
: 文档注释更新TODO 注释更新准确反映了当前的平台支持状况,有助于开发者理解限制。
src/packages/image/image.taro.tsx (1)
78-78
: 样式处理逻辑优化移除了 RN 特定的 borderRadius 处理逻辑,使用统一的
pxCheck
函数处理单位转换,使代码更加简洁且易于维护。src/packages/cell/demos/taro/demo6.tsx (1)
25-25
: 统一渲染逻辑的改进移除了基于平台的条件渲染,使组件在所有平台上保持一致的渲染行为,这是一个很好的简化。
Also applies to: 35-35, 76-76, 113-113, 117-117
src/packages/button/button.taro.tsx (1)
12-12
: 更新平台检测导入从
harmonyAndRn
更新为harmony
,简化了平台检测逻辑。packages/nutui-taro-demo/config/index.js (1)
13-15
: 插件配置简化通过条件判断优化了插件配置,移除了 React Native 相关的特殊处理,使代码更加简洁。
src/packages/swipe/swipe.taro.tsx (1)
15-15
: 优化平台检测导入简化了平台检测相关的导入,仅保留 harmony 函数。
src/packages/inputnumber/inputnumber.taro.tsx (2)
9-9
: 简化组件导入和平台检测移除了不必要的平台特定导入,优化了代码结构。
Also applies to: 13-13
87-87
: 优化平台检测逻辑使用 harmony() 替代了之前的多平台检测,使代码更加清晰。
src/packages/range/range.taro.tsx (3)
19-19
: 优化平台检测和样式类名处理
- 简化了平台检测的导入
- 统一使用 isHm 变量处理平台特定的样式类名
- 移除了冗余的平台判断逻辑
Also applies to: 148-148, 153-153
526-526
: 简化事件传播控制统一了点击事件的传播控制逻辑,移除了平台特定的处理。
Also applies to: 556-556, 588-588
Line range hint
342-362
: 改进触摸事件处理优化了触摸事件的处理逻辑,但需要注意以下问题:
- 代码注释提到垂直滑动时的问题尚未解决
- 建议添加防抖处理以提高性能
🧰 Tools
🪛 Biome (1.9.4)
[error] 343-343: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
src/packages/backtop/doc.en-US.md (2)
53-53
: 文档标题更新符合重构目标标题更改反映了组件不再支持 React Native,现在专注于鸿蒙系统的支持。
73-73
: 属性描述更新准确反映支持范围
scrollRes
属性描述更新准确反映了当前支持的平台范围。src/packages/notify/notify.taro.tsx (1)
102-119
: 渲染逻辑优化得当移除了 React Native 相关的条件渲染,使代码更加清晰和易于维护。建议确认此更改在所有支持的平台上都能正常工作。
运行以下脚本验证组件在其他文件中的使用情况:
✅ Verification successful
优化后的渲染逻辑验证通过
经过验证,移除 React Native 相关的条件渲染是安全的:
- CSSTransition 组件在 H5 和 Taro 平台上都有稳定的使用记录
- 实现方式与其他组件(如 Dialog、Popup)保持一致
- 动画时长和类名配置符合项目规范
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 描述:检查 Notify 组件的使用情况 rg -A 3 "import.*Notify.*from.*@nutui/nutui-react"Length of output: 3353
Script:
#!/bin/bash # Check CSSTransition implementation and usage echo "=== Checking CSSTransition implementation ===" ast-grep --pattern 'import { CSSTransition } from $_' echo -e "\n=== Checking CSSTransition usage ===" rg -A 3 "<CSSTransition"Length of output: 2724
src/packages/empty/empty.taro.tsx (1)
Line range hint
95-102
: 图片尺寸处理逻辑优化合理移除了 React Native 相关的环境检查,使代码更加简洁。建议添加单元测试以确保不同类型的
imageSize
输入都能正确处理。运行以下脚本检查现有的测试覆盖情况:
} | ||
import('@/sites/assets/styles/reset.scss') | ||
import('@/packages/nutui.react.scss.taro') | ||
import('@nutui/touch-emulator') |
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.
💡 Codebase verification
建议使用条件导入 touch-emulator
当前实现会在所有环境下加载 touch-emulator,建议参考以下方案优化:
- 使用 web() 工具函数进行环境检测
- 仅在 Web 环境下导入 touch-emulator
示例代码:
import { web } from '@/utils/platform-taro'
if (web()) {
import('@nutui/touch-emulator')
}
🔗 Analysis chain
建议评估 touch-emulator 的必要性
由于移除了环境检查,touch-emulator 现在会在所有环境下加载。建议:
- 评估在非触摸设备上是否需要此模块
- 考虑是否可以通过其他方式按需加载
运行以下命令检查 touch-emulator 的使用情况:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# 检查 touch-emulator 的使用范围
rg -g '*.{ts,tsx,js,jsx}' '@nutui/touch-emulator' -A 2
Length of output: 435
Script:
#!/bin/bash
# Check for environment detection utilities
rg -g '*.{ts,tsx,js,jsx}' 'isMobile|isH5|getEnv|ENV_TYPE' -A 2
Length of output: 32880
Script:
#!/bin/bash
# Check platform detection utilities
cat src/utils/platform-taro.ts
Length of output: 373
@@ -93,7 +91,7 @@ | |||
"e2e:open:h5": "start-server-and-test dev http://localhost:5173/ cypress:open", | |||
"e2e:run:taro": "start-server-and-test dev:taro:h5 http://localhost:10086 cypress:run:taro", | |||
"e2e:open:taro": "start-server-and-test dev:taro:h5 http://localhost:10086 cypress:open:taro", | |||
"update:taro:entry": "node ./scripts/rn/update-taro-entry", | |||
"update:taro:entry": "node ./scripts/harmony/update-taro-entry", |
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.
💡 Codebase verification
需要完整清理 React Native 相关代码
检测发现多处遗留的 RN 相关引用:
- package.json 中仍保留
dev:taro:rn:dark
脚本命令 - 多个构建脚本(包括新的 harmony 脚本)中存在 RN 相关代码
- scripts 目录下约 30 个文件仍包含 RN 引用
建议进行全面清理,确保完全移除 React Native 支持。
🔗 Analysis chain
脚本路径更新符合架构调整
将 Taro 入口更新脚本从 RN 目录迁移到 harmony 目录,与移除 React Native 支持的目标一致。建议确保相关的构建和测试流程都已更新。
运行以下脚本验证相关脚本和配置:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# 描述:检查是否还有遗留的 RN 相关文件
fd -t f "rn" ./scripts
Length of output: 22
Script:
#!/bin/bash
# 检查新的 harmony 脚本是否存在
echo "=== 检查 harmony 脚本 ==="
fd -t f "update-taro-entry" ./scripts/harmony
# 使用 ripgrep 搜索脚本目录中的 RN/React Native 引用
echo -e "\n=== 检查脚本中的 RN 引用 ==="
rg -i "react.?native|rn" ./scripts -l
# 检查 package.json 中的 RN 相关配置
echo -e "\n=== 检查 package.json 中的 RN 配置 ==="
rg "react.?native|rn" package.json
Length of output: 1458
…nd component
🤔 这个变动的性质是?
🔗 相关 Issue
💡 需求背景和解决方案
☑️ 请求合并前的自查清单
Summary by CodeRabbit
基于提供的变更摘要,以下是发布说明:
重大变更
功能调整
性能优化
开发者影响