https://www.gravatar.com/avatar/62e8b71078f520590446ddf0979949dd?s=240&d=mp

分享RN最佳实践

Let's RNers have nothing hard to do

patch-package 补丁工具使用

patch-package 官方地址 https://www.npmjs.com/package/patch-package 首次安装 失败&&解决 package.json内scripts下 添加 1 "postinstall": "patch-package" 安装,失败 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 npm i patch-package 10:18:05 npm ERR! code ECONNREFUSED npm ERR! errno ECONNREFUSED npm ERR! FetchError: request to https://mirrors.huaweicloud.com/repository/npm/patch-package failed, reason: connect ECONNREFUSED 127.0.0.1:1087 npm ERR! at ClientRequest.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/node-fetch-npm/src/index.js:68:14) npm ERR! at ClientRequest.emit (events.js:400:28) npm ERR!

React Native 在VSCode编码提效

插件 代码智能提示 copilot 触发内联建议 Option (⌥)+\ https://docs.github.com/zh/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment?tool=vscode#keyboard-shortcuts-for-macos (键联提示)代码片段 ES7+ React/Redux/React-Native snippets massCode assistant (配合打开massCode App使用) 标签修改 自动首尾同步 Auto Rename Tag 拼写检测 Code Spell Checker 格式化 prettier 提升阅读感受 Gitlens 悬停查看代码改动人 Material Icon Theme / vscode-icons 侧边导航区 目录展示icon indent-rainbow 标签开闭连线 Image Preview 在图片路径引用行 左侧展示icon code snippets React/Redux/React-Native snippets 指令说明: https://github.com/ults-io/vscode-react-javascript-snippets/blob/HEAD/docs/Snippets.md 优点: 对常用的hooks支持的简直完美 可以试试输入useeff...。 会提示useEffectSnippet,enter后挨个填词,tab切换光标,set方法自动驼峰,简直完美! 使用rnfes创建组件,会根据文件名 命名组件 想根据英文记忆一下快捷指令名称,可以参考 Fullstack React/React Native snippets 对快捷指令 都有英文解释 Mac、VSC快捷键 Mac 系统自带 (shift+) ctrl+ (option+) f/b (shift+) ctrl+ p/n VSC 更改了上述快捷键对应的指令,非常糟糕。可以调整下如下 VSC Next Change (Important)

React Native 开发沉淀

一些业务的最佳实践探索 基础组件封装 瀑布流列表base组件 图片base组件 … 实现 模仿抖音、小红书 输入 #标签 高亮 瀑布流列表 瀑布流最佳实践:双列均匀分布,高度计算&缓存 实现 瀑布流列表·自动滚动动画 实现 横向·瀑布流列表 实现 仿抖音/小红书 对贴图/贴字 进行拖拽、缩放、旋转等复杂手势 封装一个 易用的、远程字体动态下载&应用组件 封装一个 低耦合、易用的文本输入框弹窗 实现 差不多理想的极简RN弹窗 最佳实践 点赞(收藏等)状态的全局同步更新 实践 列表Item精确曝光埋点 [todo] 实践 多tab多列表滑动吸顶效果 [todo] 实践 服务端下发自定义组件代码 前端接收&渲染[todo] 实践 拆包 [todo] 组件库 易用的应用远程字体的text组件库 - react-native-remote-font 其它(提效、工具、学习…) 探究 代码规范 React Native 编码提效 on VSCode 用脚手架 制作一个RN库 放npm(含踏坑记录) 贡献给react-native的第一个PR React学习收获 学习《React Hooks 核心原理与实战》笔记 常用hooks依赖检查,从源头提醒避免奇葩bug … npm 好用工具 patch-package 补丁工具使用 … 从0到1用Jenkins实现对RN项目一键打包、发布

React 学习

学习《React Hooks 核心原理与实战》笔记 hooks开发工具 常用hooks依赖检查,从源头提醒避免奇葩bug[todo] …

RN 动画 - 缩放、旋转、拖拽

需求 仿抖音、小红书,图片视频编辑区,贴图、贴文字功能 View支持拖拽 View右下角有一个icon比较特殊,该icon可控制View缩放 icon随手指移动 View缩放(以View中心点为圆心) View会旋转(以View为中心点为圆心) icon位置一直保持在View右下角 View支持双指捏 进行缩放 效果图 源码 HBMultiGestureView.js calculator.js CornerToolGestureView.js 解读 HBMultiGestureView.js 使用的什么手势api? 通过PanResponder为Animted.View添加手势 将不同的手势操作 处理为拖拽、旋转、缩放等UI表现,从哪着手? 通过手势回调onPanResponderGrant、onPanResponderMove、onPanResponderRelease去 如何判断 确定是否操作的右下角特殊icon视图? 右下角icon onLoad后,拿到target,通过入参rotateScaleTargetRef传递给HBMultiGestureView,HBMultiGestureView内 通过手势回调参数中的e.nativeEvent.target获取所操作的视图target,比较判断是否相等 解读 calculator.js 里面都是公式函数,用在HBMultiGestureView.js 中,处理这些核心计算: 计算两指连成的直线移动后的 角度, 从而确定 双指操作时的旋转角度 计算两指移动后与移动前相比 两指连线的倍数关系, 从而确定 双指操作时的放大倍数 计算A点、初始触摸位置B点、当前触摸位置C点,计算AC/AB放大比例, 从而确定单指拖动右下角按钮时的放大倍数 注:A点,即触摸开始时 视图的中心位置 计算向量AC与AB的夹角, 从而确定单指拖动右下角按钮时的旋转角度 解读 CornerToolGestureView.js CornerToolGestureView,是四个角落携带工具按钮的手势视图 基于HBMultiGestureView封装的,所以开发时真正用的是这个CornerToolGestureView HBMultiGestureView就类似一个三方库,不是面向具体业务的,俗话说就是,开发时直接用它去组装UI 不够简单,于是封装为更好用的组件CornerToolGestureView,用于各个地方。 就像是react-native-fast-image,我们并不在开发功能时直接用它,往往会对这个三方组件封装一层(e.g.增加了设置error占位图能力),再去用于各个地方,比如 我们封装的图片base组件

从0到1用Jenkins实现对RN项目一键打包、发布

Jenkins for iOS(第二次搭建记录) 运行环境搭建(简略版) 下载 jenkins.war jdk8 运行jenkins 首次设置账户信息(备忘) 账户: admin 密码: admin 建Job & 配置 建第一个Job 设置Git 添加git 地址 添加ssh凭据【注意】 账号:生成ssh时的邮箱(~/.ssh/id_rsa.pub 最末尾可见) 密码:ssh秘钥(取于 ~/.ssh/id_rsa) 配置 脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 #!