博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一个React项目总结
阅读量:5993 次
发布时间:2019-06-20

本文共 1425 字,大约阅读时间需要 4 分钟。

使用react编写了简书的主页、文章页,登录页,也算一个比较完整的react项目,收获不少。知道了一个项目正常开发流程,目录组织,一些常见的问题的应对方案,在此记录下。

搭建项目

  • 使用create-react-app创建项目
  • 使用yarn安装依赖

目录组织

  • project
    • src
      • store(全局store)
        • index.js(store出口)
        • reducer.js(组合来自其他组件的reducer)
      • common(公共组件)
        • OneCommonComponent(一个公共组件的例子)
          • index.js(组件代码出口)
          • style.js(使用styled-components编写的css in js样式文件,使得组件的css私有化)
          • store
            • index.js(store出口文件)
            • reducer.js(组件的reducer)
            • actionTypes.js(action的type以常量的形式定义在这里)
            • actionCreators.js(创建action的函数,以及异步的被包装成action的请求函数定义在这里)
          • components(组件的私有组件)
            • OnePrivateCom1.js
            • OnePriveteCom2.js
      • pages(非公共组件定义处)
        • home(例子:一个Home组件)
          • index.js(组件代码出口)
          • style.js(使用styled-components编写的css in js样式文件,使得组件的css私有化)
          • store
            • index.js(store出口文件)
            • reducer.js(组件的reducer)
            • actionTypes.js(action的type以常量的形式定义在这里)
            • actionCreators.js(创建action的函数,以及异步的被包装成action的请求函数定义在这里)
          • components(组件的私有组件)
            • OnePrivateCom1.js
            • OnePriveteCom2.js

数据管理

  • 使用redux
  • 使用react-redux简化对redux的操作
  • 使用redux中间件redux-thunk来支持异步action
  • 使用immutable.js
    • 对immutable对象命名作出约定,如 $list.get()
  • 分割store,通过combineReducers组装
    • 使用redux-immutable提供的combineReducers来使得合成reducer变成immutabe
  • 使用redux-immutable在redux中使用immutable.js
  • 使用redux-devtools调试工具

css解决方案

  • 使用styled-components来管理css
  • vscode扩展vscode-styled-components提供语法高亮和自动补全

路由

  • 使用react-router@4管理路由

如何实现动画效果

  • 手动切换class
  • 通过定义keyframes
  • 使用css-transition-group

数据类型检查

  • 使用React提供的propTypes检查数据类型

性能调优

  • 重载shouldComponentUpdate函数,手动判断是否需要rerender
  • 组件尽量继承pureComponent(配合immutable.js使用)

转载于:https://juejin.im/post/5cda90dee51d4547587bf6cf

你可能感兴趣的文章
MySQL Hash索引和B-Tree索引的区别
查看>>
Oracle RAC 修改 IP 地址
查看>>
Apache2.X下开启GZIP页面压缩
查看>>
超市伙伴计划之智为铭略
查看>>
如何设置innodb_log_file_size
查看>>
每个人都可以拥有一款属于自己的 jsFiddle
查看>>
2016成长之路
查看>>
最小化安装OEL6.5和配置
查看>>
我的友情链接
查看>>
spring的事物配置
查看>>
ganglia安装报错解决
查看>>
Win7与虚拟机中Linux的ping通设置
查看>>
win7恢复快速启动栏
查看>>
zabbix的添加自定义监控项目、配置邮件告警、测试告警
查看>>
我的友情链接
查看>>
Java IO最详解
查看>>
依赖注入
查看>>
CentOS 5.5编译安装Nginx1.0.15+MySQL5.5.23+PHP5.3.10
查看>>
“只能通过Chrome网上应用商店安装该程序”解决方法
查看>>
Android 开发踩过的坑以及注意事项
查看>>