工作日常依然是继续重构 SA 项目,这里面的坑真的多。今天又给栽在了“编码实现方式”上。任何编程语言都是灵活的,最终效果哪怕是同一种,背后的实现都可以是百花齐放的。
相较于老版本的“穿插式”方案(弹窗哪一层组件调用就放哪里)这次重构我把组件关系给“扁平化”(无论调用位置在哪里,弹窗都放在父组件里面)了。这种方法显而易见,结构清晰,可读性蛮好的,缺点就是父组件承载的“压力”会比较多,因为它们的状态均由父组件进行管理,代码会略多一些。
我也就这件事情和公司的 @LW 同事聊了聊,他就很随性,说我怎么顺手就怎么写就行。我感觉我一个人都能想出很多写法,甚至今天的我再去看去年的我写的代码也是坨屎...
感觉这种问题真的是没有绝对的对和错,我手里这种问题太多了,全是纠结,天天背着这种包袱,感觉怎么写都是垃圾
也不知道这样的问题,要怎么逐渐去改善了,希望各位能给予我一些更好的建议吧...
晚上打完原神到了十点,之后继续维护项目。回到了「保罗 API Next」项目下,尝试把「奇趣播放器」移植到 React 环境下,期间通过公主连结 OP《Lost Princess》这首歌,发现播放器的歌词解析算法有些许不妥,稍作了些许改进并提交到了 GitHub。
播放器组件使用了 forwardRef
转发给父组件,实现了父组件操作子组件的功能。在给组件参数设置 TS 类型的过程中,发现一个小问题,就是 FC 组件如果 props
只有 ref
,你的 TS 定义也不能给 props
的类型设置为 undefined
,否则会出现 ref
参数校验失败(不能将类型“RefObject<>”分配给类型“never”)的情况,需要注意下。
// Correct
export interface KPlayerProps {}
function KPlayer(props: KPlayerProps, ref: Ref<KPlayerRef>) {}
// Error
function KPlayer(props: undefined, ref: Ref<KPlayerRef>) {}