本文不考虑各种写法的 CPU 时间开销,只考虑各种写法的开发人员时间开销。
ref 以及其衍生的 forwardRef 是 React 直接提供给组件设计人员的工具,但我个人并不推荐用 ref,也不是很推荐用 forwardRef。 不推荐 ref 的原因:
- 函数式组件没有实例,不能通过 ref 访问其实例。
- 需要新建一个变量,且其初始类型一定为 null,在使用时需要判断。 不太推荐在跨组件场景下用 forwardRef 的原因:
- 函数式组件没有实例。
- 虽然无论如何都要保留一个联系子组件的"指针",但可能有更好的方法,从而不需要将该"指针"存储于单独的位置(而不是组件内部),造成更多的多实例场景下的麻烦。当然,对于子组件联系亲代组件,仍需将该指针保存于单独的位置。