React组件规范
1 有状态组件只有render方法才能返回JSX,因为JSX中的虚拟DOM有一个_owner属性,这与它与组件实例进行绑定。如果其他方法里使用了JSX,_owner就没有与组件实例进行绑定。 2 render方法里面应该以 // bad render(){ if(this.state.a){ return <strong>222</strong> }else{ return <div>222</div> } } 3 ref应该尽快淘汰字符串形式,因为字符串形式的ref会自始至终将字符串放在refs对象中,会有泄露的问题。 // bad <Foo ref="myRef" /> // ok <Foo ref={(ref) => { this.myRef = ref; }} /> 上面的方法之所以是ok,而不是good,是因为我们在查看组件时,人家也很难察觉到你在JSX里偷偷为组件添加了一个新属性。组件所有用到的属性,应该都能在constructor或defaultProps中找到。 4 5 不要在componentWillUpdate/componentDidUpdate/render中执行setState,可能异致死循环。 6 不要在JSX中使用bind方法绑定组件实例 // bad class extends React.Component { onClickDiv() { // do stuff } render() { return <div onClick={this.onClickDiv.bind(this)} />; } } // good class extends React.Component { constructor(props) { super(props); this.onClickDiv = this.onClickDiv.bind(this); } onClickDiv() { // do stuff } render() { return <div onClick={this.onClickDiv} />; } } 7 不要使用cloneElement,createElement,让JSX与babel帮你创建它们。 8 不要使用createClass,mixin, PropTypes(它们已经被移出核心库,被逐渐边缘化,有关属性的描述改成文档注释吧) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |