经过一段时间的react开发,自己总结了一些小习惯,自动构建webpack

1. 组件命名文件夹

一个组件一个文件夹,可读性高,结构清晰


文件夹:Danamic(组件首字母大写)index.jsx
style.less
data.js

引用 :

import Danamic from './Danamic'

webpack能自动识别文件夹内index文件 (index首字母只能小写)

React 的 JSX 里约定分别使用首字母大、小写来区分本地模块的类和 HTML 标签

2. 无状态组件


import React from 'react'
import { render } from 'react-dom'function isEmpty(obj) {return obj === null || obj === undefined
}export default ({ type, clickFn }) => {let text = ''switch ((isEmpty(type) ? '' : type).toString()) {case "2":text = '没有更多了'breakcase "1":text = '点击加载更多'breakcase "0":text = '网络加载问题,请稍后重试'break}return <div className="warning" onClick={clickFn}>{text}</div>
}

没有性能上的差别,就是实现同样的功能,可以少写下面这些代码

export default class extends React.Component {constructor(props) {super(props)}
}

3. static react.propTypes

constructor(props) {super(props)}static propTypes = {info: React.PropTypes.object.isRequired,loginSuccess: React.PropTypes.func.isRequired,}

加上propTypes 能一眼看出父组件传的参数以及类型

4. 提取数据请求

data.js

import React from 'react'
import ajax from 'ajax-promise-simple'
import loadPage from '@/common/loadPage'module.exports = {//获取全部评论async getList(params) {let result = await ajax.getJSON('/amsquare/detailcomment', params)return { succsess: result.code === 0, data: result.data ? result.data : [] }},//点赞async zanClick(params) {let result = await ajax.getJSON(`/amsquare/addcmtpraise`, params)// console.log(params)return { succsess: result.code === 0 }},//删除动态async removeDT(params) {let result = await ajax.getJSON('/amsquare/deldymanic', params)if (result.code === 0) {const url = `http://wen.58.com/amsquare/main?from=weijiaoliu_nav`;const browser = window.____json4fe.browser;loadPage(url, browser, false)}},}

应用:

import { getList } from '../data'getListData = async () => {this.setState({loading: true})let { succsess, data } = await getList(this.infoConf)this.setState({loading: false})if (succsess) {this.setState((preState, props) => ({hasMore: data.length < this.infoConf.pageSize ? false : true,resultStatus: data.length < this.infoConf.pageSize ? 2 : 1,list: [...preState.list, ...data],}))this.infoConf.pageindex++;} else {this.setState({resultStatus: 0})}}

5. 将多个组件放在一个index对外导出


import ajax from './ajax'
import lazyload from './lazyload'
import momentHelper from './momentHelper'export default { ajax, lazyload, momentHelper }

6. 提取封装 共用组件

例如:

  • loading
  • log
  • debounce
  • 滑动加载更多
  • app下判断登录
  • app下跳转页面

引用:


import { scrollBottom, debounce } from '@/common/scrollData'

使用 @ 相当于src目录 (自动构建配置) (比用 ../ ./ 好理解一些)

7. 用let替换var

8. 代码加注释

9. webpack.config.js


resolve: {...extensions: ['.ts', '.tsx', '.js', '.json', '.styl', '.less'], ...},

require的时候可以直接使用require('file'),不用require('file.js')

10.webpack 端口号随机

 port: Math.floor(Math.random() * 1001) + 7000,

最近写文档比较多,所以把MarkDown整理了一遍,有需要可以参考:

我的MarkDown学习之旅

我开发中总结的小技巧相关推荐

  1. iPhone开发中一些使用小技巧

    经过iphone开发,我发现在开发过程中最难的就是一些嘈杂的细节,而了解一些小技巧就会达到事半功倍的效果,下面我就总结一下在iphone开发中的一些小技巧. 1.如果在程序中想对某张图片进行处理的话( ...

  2. iPhone开发中的一些小技巧

    NavBar+TarBar iphone开发 NavBar+TarBar 1  改变NavBar颜色:选中Navigation Bar 的Tint属性.选中颜色. 2  隐藏"back&qu ...

  3. [as部落首发]网页游戏开发中的一些小技巧

    分享一:swf文件的自动化版本管理 如何在图片更新后,玩家能立即看到最新的图片呢?按照技术中心的规定,需要在文件地址后面加入版本号,格式为"__ver=版本号",这个版本号如何进行 ...

  4. JS开发中常用的小技巧

    1.获取指定范围内的随机数 1 2 3 function getRadomNum(min,max){     return  Math.floor(Math.random() * (max - min ...

  5. Cocos2d-JS开发中的一些小技巧(持续更新)

    1.获取URL中的请求参数的值----此方法接收参数名 1 2 3 4 5 6 function getQueryString(name) {     var reg = new RegExp(&qu ...

  6. iphone开发中的一些小技

    在iPhone开发过程中,一些小技巧对开发工作有很大的帮助作用,所以以下内容收集了一些开发过程中的小技巧. 1.如果在程序中想对某张图片进行处理的话(得到某张图片的一部分)可一用以下代码:   UII ...

  7. web开发常用js功能性小技巧(转)

    web开发常用js功能性小技巧 -------------------------------------------------------------------------------- < ...

  8. 学习中遇到的小技巧(陆续更新……)

    原来只是在网易博客里整理了一些学习中遇到的小技巧,现在开始在这里慢慢积累希望对大家有所帮助. 1.浏览器技巧: 如果浏览器的缓存已满,服务速度可能会减慢,您可能无法下载和查看附件.一下是在Intern ...

  9. 工作中遇到的小技巧 一(暂停更新)

    原来只是在网易博客里整理了一些学习中遇到的小技巧,现在开始在这里慢慢积累希望对大家有所帮助. 1.浏览器技巧: 如果浏览器的缓存已满,服务速度可能会减慢,您可能无法下载和查看附件.一下是在Intern ...

最新文章

  1. .c/.cpp文件形成.exe文件的过程
  2. 工作组环境中配置WSUS客户端
  3. html溢出自动滚动,html – 溢出-y:使用overflow-x滚动:可见
  4. DS和[address]
  5. 时间转换竟多出1年!Java开发中的20个坑你遇到过几个?
  6. AI 女性界的“扛把子”,凭一己之力迫使 NIPS 改名
  7. 小数变百分数_小数除法三要“点”
  8. 使用alias简化命令输入
  9. MyEclipse详细使用教程
  10. FFplay源码分析-rtmp入口
  11. 日志易陈军:迭代加速,日志分析助力IT智能化
  12. 引汉济渭:再续秦人治水神话_陕南赤子_新浪博客
  13. 灵雀云:etcd 集群运维实践
  14. 基于cesium的三维管线系统综述
  15. python基础----文件处理
  16. Python_03序列、函数
  17. 视频去水印软件?在线去除视频水印工具网站?
  18. 中国房价必跌的40个理由
  19. Badboy安装和介绍
  20. 白嫖代理去哔哩哔哩看冰冰!!!确定不进来康康?

热门文章

  1. 操作系统三: 地址空间与地址生成
  2. 汇编: mul乘法指令
  3. CentOS7安装Nginx及其相关
  4. MySQL配置全文索引
  5. 一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
  6. 云告警平台 OneAlert :如何帮助运维工程师做好汇报?
  7. android RefBase、sp、wp
  8. 【工具类】JAVA POI 代码导出表格的两种办法(代码全注释,小白也不怕)
  9. 【SSM框架系列】Spring IoC(控制反转) DI(依赖注入)注解开发
  10. hadoop知识整理(4)之zookeeper