分享RN最佳实践
Let's RNers have nothing hard to do
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!
插件 代码智能提示 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)
一些业务的最佳实践探索 基础组件封装
瀑布流列表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 Hooks 核心原理与实战》笔记
hooks开发工具
常用hooks依赖检查,从源头提醒避免奇葩bug[todo] …
需求 仿抖音、小红书,图片视频编辑区,贴图、贴文字功能
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组件
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 #!