react组件开发规范总结

时间:2023-01-23 09:55:02

开发react也有一段时间了,一开始的随手写,生命周期乱用,无状态组件的不熟悉。现在逐渐规范一下,从网上各个地方copy过来,整理出一份文档。可能不全,后续还得多提炼总结和完善。

一、组件内方法书写,先写生命周期函数(按执行顺序写),再写自定义函数。

import React,{ Component } from 'react';

class Demo extends Component {
constructor(props,context) {
super(props,context)
this.state = {
//定义state
}
}
componentWillMount () {
}
componentDidMount () {
}
componentWillReceiveProps (nextProps) {
}
shouldComponentUpdate (nextProps,nextState) {
}
componentWillUpdate (nextProps,nextState) {
}
componentDidUpdate (prevProps,prevState) {
}
componentWillUnmount () {
} yourMethoed1(){
} yourMethoed2(){
}
render () {
return (
<div></div>
)
} }
export default Demo;

二、事件this绑定放到constrcutor构造函数中

import React,{ Component } from 'react';

class Demo extends Component {
constructor(props,context) {
super(props,context)
this.state = {
//定义state
}
this.handlerMethod = this.handlerMethod.bind(this)
} render () {
return (
<div></div>
)
}
}
export default Demo; // 不推荐写法:
<div onClick={this.handlerMethod.bind(this)}>do some actions</div>

三、组件一定要有prop传入类型校验,即要写PropTypes

注意:prop-types是第三方的npm包。react16版本后,自己不再维护PropTypes。因此要引用第三方的

import React,{Component} from 'react';
import PropTypes from 'prop-types';
class App extends Component{
render(){
return <div>{this.props.name}</div>
}
}
App. propTypes = {
name: PropTypes.string
}

四、异步获取数据请求放到componentDidMount中

五、尽量不要在钩子函数外使用setState方法,以及setTimeout中,不要在componentWillUpdate/componentDidUpdate/render中执行setState, 可能异致死循环。

六、访问真实dom方式:refs

<AudioCompoent  ref={(ref) => { this.myRef = ref; }}/>

// 不推荐
<AudioCompoent ref="myRef"/>

七、render方法内尽量少申明变量

八、数据遍历组件的时候要有key属性,但是不要用数组下标作为key

render() {
return (
<ul>
{this.state.sort.map((item, index) => {
return <li key={item.name}>
{item.name} <input type=“text”/>// 假定name是唯一的
</li> })}
</ul> );
}

九、简单展示类型,不涉及到state的组件,用function 函数声明式的无状态组件。

import React, {PropTypes} from 'react'
import {connect} from 'react-redux' const dataType = {
onExpand: PropTypes.func.isRequired,
isOpen: PropTypes.bool
} const List = ({ onExpand, expanded = false, childred }) =>
<form style={ expanded ? { height: 'auto' } : { height: } }>
{children}
<button onClick={onExpand}>Expand</button>
</form>; List.propTypes = dataType export default connect(List)









react组件开发规范总结的更多相关文章

  1. react组件开发规范(一)

    这是通过修改项目运行在Google上时的警告,总结的的部分react组件开发规范: (1)编写组件时,一定要写PropTypes,切莫为了省事儿而不写! 如果一个Props不是required,一定在 ...

  2. React组件开发入门

    React 组件开发入门 Introduction 本文组成: Ryan Clark文章Getting started with React的翻译. 博主的实践心得. React由Facebook的程 ...

  3. React组件开发(一)初识React

    *React不属于MVC.MVVM,只是单纯的V层. *React核心是组件(提高代码复用率.降低测试难度.代码复杂度). *自动dom操作,状态对应内容. *React核心js文件:react.js ...

  4. wn-cli 像React组件开发一样来开发微信小程序

    项目地址:wn-cli wn-cli wn-cli 像React组件开发一样来开发微信小程序 名字由来:wn -> weapp native 取第一个字母 Install npm install ...

  5. jquery插件模式开发和react组件开发之间的异同

    jquery插件模式开发和react组件开发之间的异同

  6. react复习总结(1)--react组件开发基础

    这次是年后第一次发文章,也有很长一段时间没有写文章了.准备继续写.总结是必须的. 最近一直在业余时间学习和复习前端相关知识点,在一个公司呆久了,使用的技术不更新,未来真的没有什么前景,特别是我们这种以 ...

  7. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

  8. React代码开发规范

    前言 一般在团队开发中每个人的代码习惯都不太一样,这样就会导致代码风格不一致,以致于维护和修改bug的时候看别人的代码成为一种痛苦...这种情况尤其在前端开发中尤为明显.因为关于前端的开发规范貌似也没 ...

  9. React 组件开发初探

    react.js 在线地址:http://slides.com/yueyao/deck/#/ COMPONENT JSX 预编译语言, 一个基于ECMAscript 的xml-link 的语法扩展,最 ...

随机推荐

  1. Code First :使用Entity&period; Framework编程&lpar;6&rpar; ----转发 收藏

    Chapter6 Controlling Database Location,Creation Process, and Seed Data 第6章 控制数据库位置,创建过程和种子数据 In prev ...

  2. maven 项目启动tomcat报错 java&period;lang&period;ClassNotFoundException&colon; org&period;springframework&period;web&period;context&period;ContextLoaderListener

    maven项目启动tomcat报错: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderLi ...

  3. Android draw9patch 图片制作与使用

    理解一下4句话: 上边 决定左右拉升不变形 左边 决定上下拉升不变形 右边 设置内容高度区域 下边 设置内容宽度区域 下面我拿张图片分别举例说明: 1.QQ多彩气泡 聊天对话框也用.9图片制作 继承过 ...

  4. 理解 OpenStack &plus; Ceph (2):Ceph 的物理和逻辑结构 &lbrack;Ceph Architecture&rsqb;

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  5. ArcServer 10&period;0 &ldquo&semi;No Content&rdquo&semi;、&ldquo&semi;Server Host Cannot be null&rdquo&semi; 错误

    问题一:"No Content" 问题描述: 在输入服务地址时:http://192.168.1.180/arcgis/services   结果出现下面的错误:   解决办法: ...

  6. SQL Server 2014 AlwaysON

    . 环境准备 虚拟机:ssag-bj-ad-01, ssag-bj-fc-01, ssag-bj-sql-01, ssag-bj-sql-02, ssag-sh-ad-01, ssag-sh-fc-0 ...

  7. IIS配置及防黑

    安装IIS.部署网站(发布或者拷贝都可以).修改连接字符串,compilation设为false,删掉cs代码 上传文件夹不给执行权限: 在iis管理器中找到上传文件夹,选择属性--执行权限,设置为“ ...

  8. nginx配置中文域名解析

    当nginx配置文件中的default如果遇到解析指向问题的时候 ,配置了中文 没有用 后来找了找这个网址 http://tools.jb51.net/punycode/ 然后进去转换了一下 把 评估 ...

  9. 开心系列学习笔记---------javascript&lpar;7&rpar;

    一.函数        1)函数类型            函数声明(缩写为FD)是这样一种函数:            1.有一个特定的名称            2.在源码中的位置:要么处于程序级 ...

  10. SQL&ast;Plus break与compute的简单用法

    SQL*Plus break与compute的简单用法在SQL*Plus提示符下输出求和报表,我们可以借助break与compute两个命令来实现.这个两个命令简单易用,可满足日常需求,其实质也相当于 ...