🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
- 【强制】 代码中初始化state因在constructor(props)函数中,而且尽量对每个变量进行注释; - 【强制】 代码中使用setState时,因注意异步可能导致的问题,尽量使用回调函数; ``` this.setState({ //todo },()=>{ //执行setState后执行此函数 }) ``` - 【强制】 代码中使用props时,需进行propTypes检测和defaultProps默认值初始化; ``` static propTypes = { color: PropTypes.string, dotRadius: PropTypes.number, size: PropTypes.number }; static defaultProps = { color: '#1e90ff', dotRadius: 10, size: 40 }; ``` - 【强制】 代码中用于页面展示处理UI的组件,命名以Page结尾,自定义组件命名中必须包含Component; 例子: ``` LoginController 登录页 BtuuonComponent 按钮组件 ``` - 【强制】代码中创建数组或对象使用以下方式; ``` const user = { name:'time', sex:'男', age:25, }; const itemArray = ['0','1','2',3,{name:'25',age:'男'}]; ``` - 【强制】代码中函数绑定this,强制使用箭头函数; 注:除组件原有方法,其他自定义函数命名时,需使用箭头函数; ``` // 系统组件生命周期方法 constructor(props) { super(props); }; // 自定义方法 goMainPage=()=> { }; ``` - 【推荐】代码中一些网络数据初始化,配置信息,推荐在此生命周期进行初始化; ``` componentWillMount ``` - 【强制】代码中使用定时器或者DeviceEventEmitter,必须在组件卸载进行销毁或者清除; ``` componentDidMount() { //注意addListener的key和emit的key保持一致 this.msgListener = DeviceEventEmitter.addListener('Msg',(listenerMsg) => { this.setState({ listenerMsg:listenerMsg, }) }); } goMainPage=()=> { this.timer = setTimeout( () => { console.log('把一个定时器的引用挂在this上'); }, 500 ); }; componentWillUnmount() { //此生命周期内,去掉监听和定时器 this.msgListener&&this.msgListener.remove(); // 如果存在this.timer,则使用clearTimeout清空。 // 如果你使用多个timer,那么用多个变量,或者用个数组来保存引用,然后逐个clear this.timer && clearTimeout(this.timer); } ```