这种场景使用 forwardRef API 的方式做一个“穿透”,就能简便许多:
import { createRef, forwardRef } from "react"; const MyButton = forwardRef((props, ref) => ( <button ref={ref}> {props.children} </button> )); class App extends Component { constructor(props){ super(props); this.realButton = createRef(); } componentDidComponent{ //直接拿到 inner element ref console.log(this.realButton); } render(){ return ( <MyButton ref={this.realButton}> Press here </MyButton> ); } } 总结以上就是 React v16 发布以来几个比较重要和有用的新特性,优化的同时也带来了开发体验的提升。另外 v16 对比之前版本还有不错的包大小降低,也是非常具有优势的:
除此之外,想要了解更多的一些变更比如生命周期的更新 (getDerivedStateFromProps, getSnapshotBeforeUpdate) 和 SSR 的优化 (hydrate),以及即将推出的 React Fiber (async render) 动向,可以点击查看原文了解更多的官方信息。
这么多激动人心的特性,如果你还在用 v15 甚至旧版,就赶快升级体验吧!
问答
如何从jQuery转到React.js?
相关阅读
React Native在全民K歌APP中的使用分享
Android Native 开发之 NewString 与 NewStringUtf 解析
React-Native 分包实践