react benchmark
简单的说一下如何在 react 开发中,进行 benchmark,并且会简单的说一些可以提升性能的小技巧。 Performance既然想要进行 benchmark,那么就需要一个指标来衡量。react 官方已经提供了这样的工具供开发人员使用。 官方的文档可以参考这里Performance Tools,在这里我再做个简单的介绍。 引入import Perf from 'react-addons-perf'; 就可以将 使用
获取指标的方法
输出指标的方法以下这些方法,如果不传入参数的话,都会调用
一个实例截图
一些优化技巧functional举个简单的例子,假设我们需要渲染一个并没有交互的组件,例如一句话,那么这个组件其实也不存在 我做了个简单的 demo,可以 clone 下来自己看下 // 使用 component class Text extends React.Component { render () { return ( <div>{ this.props.text }</div> ) } } export default Text // 使用匿名函数 export default (text) => { return ( <div>{ text }</div> ) } 看下
可以明显的看到 这是因为使用匿名函数,省掉了 使用 PureComponent
有了这样的一个简单的判断,在不手动写 具体的测试,同样可以看这个demo,里面有相关的测试。 一个隐形的坑通常在可交互的组件上,我们会绑定一些事件,例如下面的例子 class User extends React.Component { render () { console.log('render user') return ( <div className='user'> <p>is a component</p> <p>name: { this.props.data.name }</p> <p>id: { this.props.data.id }</p> <div className='buttons'> <button onClick={ this.props.onClick }>Change Data</button> </div> </div> ) } } class PureUser extends React.PureComponent { render () { console.log('render pure user') return ( <div className='user'> <p>is a pure component</p> <p>name: { this.props.data.name }</p> <p>id: { this.props.data.id }</p> <div className='buttons'> <button onClick={ this.props.onClick }>Change Data</button> </div> </div> ) } } class Anonymous extends React.Component { constructor (props) { super(props) this.state = { data: Foo } } render () { return ( <div> <div className='wrap'> { this.renderUser() } { this.renderPureUser() } </div> </div> ) } changeData () { Pref.start() this.setState({ data: Foo }) } renderUser () { return <User data={ this.state.data } onClick={ this.changeData.bind(this) } /> } renderPureUser () { return <PureUser data={ this.state.data } onClick={ this.changeData.bind(this) } /> } } 在这个例子中 在运行这个例子时,我们会发现即使我们使用 究其原因,在于 为了避免这种情况,可以将 class PublicClassFields extends React.Component { constructor (props) { super(props) this.state = { data: Foo } this.changeData = this.changeData.bind(this) } ... ... } 这样的话, ps后续还会有一些关于 react 性能相关的内容补充进来,同时也会不断的更新这个 repo中的实例。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |