React Native开发中是否应该使用class variable?使用规范及场景探讨
React Native 中class variable的使用规范及判断依据
React 和 React Native 中使用class variable不属于反模式,是否使用可以参考以下三个核心判断依据:
- 是否需要触发UI重渲染:React 仅会在
state或props变更时触发组件重渲染,如果某个变量的变更完全不需要影响UI展示,就没有必要存入state,调用setState带来的无意义重渲染反而会增加性能开销。你提到的硬编码固定值本身运行时不会变更,也不需要触发重渲染,存入class variable是完全合理的。 - 变量的作用范围:如果固定值仅在当前组件内部使用,没有跨组件复用的需求,存入class variable比单独抽离到公共常量文件更简洁,不需要额外维护导入导出逻辑;如果多个组件都需要用到该值,再考虑抽离到统一的常量文件管理即可。
- 变量的变更频率:运行时完全不会变更的常量、不需要响应式更新的临时变量,都适合用class variable存储,不会出现状态同步问题,代码也更易读。
常见的class variable合理使用场景
实际开发中还有很多高频使用class variable的场景,都属于最佳实践范畴:
- 存储定时器、延时器的ID:比如
this.timer = setInterval(...),组件卸载时直接通过变量清除定时器即可,这类ID完全不需要参与UI渲染,存入state属于冗余操作。 - 存储第三方实例引用:比如地图组件实例、音视频播放器实例,这类实例仅用于内部调用API,不需要渲染到UI,存入class variable更方便调用,也不会有
state序列化带来的额外问题。 - 存储props/state的历史快照:需要对比前后两次属性变化做逻辑计算时,用class variable存储上一次的快照,既不需要触发重渲染,也不会污染现有响应式状态。
注意事项
唯一需要规避的用法是:不要用class variable存储会影响UI展示的内容,否则变量更新后不会触发页面重渲染,会导致UI和数据不一致,排查问题的成本非常高。
内容的提问来源于stack exchange,提问作者Tommy Leong
相关产品推荐
相关产品推荐

