React组件规范
来源:互联网 发布:mysql登录后修改密码 编辑:程序博客网 时间:2024/06/07 07:37
React组件规范
浏览数:121
2017-9-4
1 有状态组件只有render方法才能返回JSX,因为JSX中的虚拟DOM有一个_owner属性,这与它与组件实例进行绑定。如果其他方法里使用了JSX,_owner就没有与组件实例进行绑定。
2 render方法里面应该以<开头,不应该存在if else分支,视情况返回不同的JSX。相同的组件应该返回相同的顶级元素容器。
// 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 refs.xxx中的DOM节点,不应该再转存到组件实例上或其他地方中。每次访问refs.xxx必须判定其是否为空。
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(它们已经被移出核心库,被逐渐边缘化,有关属性的描述改成文档注释吧)
9 尽量不要在生命周期钩子外的方法中使用setState(包括setTimeout方法),因为react的高性能决窍就在于合并多个setState,从而减少对页面的反复渲染。React在生命周期钩子与事件回调里都对setState进行劫持,让它们进入列队,从而进行合并state
- React组件规范
- React组件规范和生命周期
- React 组件
- React组件
- react 组件
- React组件
- React 组件
- react 组件
- react组件
- react 组件
- React组件
- react---组件
- React 编程规范
- React Native 代码规范
- React/JSX 编码规范
- react native 书写规范
- react 开发规范
- React-Native开发规范
- 倍增的模板,注释都在上面了
- 深度学习中momentum的作用
- python设计模式(备忘录模式)
- 原版Win7注入USB3.0驱动和NVME驱动教程
- solr搜索关键字高亮显示
- React组件规范
- 6-17 Shortest Path [2](25 point(s))(dijkstra)
- KNN算法-小明逆袭的故事(1)
- java仿QQ截图带窗体检测
- 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
- leetcode No204. Count Primes
- iOS 服务器文件有修改才进行下载
- Mysql常见报错处理
- SQL精妙语句