首先react初始化项目—with ts

  1. 安装prettier用于格式化代码,保证项目代码风格统一
  2. 常用mock方案,因为前后端开发并行,开始没有后端接口
    • 代码侵入(直接在代码里写死Mock数据,或者请求本地的json数据)
      1.优点:无
      2.缺点:与真是server环境切换非常麻烦,一切需要侵入代码环境的行为都是不好的
    • 请求拦截
  3. 自定义hooks时写的方法名称一定要以use开头,方法里面才能使用过其他的hook
  4. 自定义debounce useDebounce减少工程搜索请求频率
    1. const debounce = (func, delay) => {
    2. let timeout;
    3. return () => {
    4. if (timeout) {
    5. clearTimeout(timeout);
    6. }
    7. timeout = setTimeout(func, delay)
    8. }
    9. }
    10. const log = debounce(() => console.log('call'), 5000);
    11. log();
    12. log();
    13. log();

debounce原理讲解
0s——->1s——->2s——-> …
一定要理解:这三个函数都是同步执行,所以他们都会在0-1s这个时间段内瞬间完成的;
log()#1 //timeout#1
log()#2 //发现timeout#1!取消之,然后设置timeout#2
log()#3 //发现timeout#2!取消之,然后设置timeout#3
所以在log()#3结束之后,就只剩设置timeout#3独自等待了

5.css-in-js可以解决的问题

  1. 缺乏模块组织
  2. 缺乏作用域(传统css
  3. 因素依赖,让样式难以追踪
  4. 没有变量
  5. CSS选择器与HTML元素耦合

6.Emotion是目前最受欢迎的css-in-js库之一
7.错误边界
8.hooks中使用useEffect 常见副作用操作
如果你熟悉 React class 的生命周期函数,你可以把 useEffect Hook 看做 componentDidMount,componentDidUpdate 和 componentWillUnmount 这三个函数的组合。
useEffect 会在每次渲染后都执行吗? 是的,默认情况下,它在第一次渲染之后和每次更新之后都会执行。
注意不要在useEffect的依赖项中使用对象,因为对象对比每次都不相等,会导致每次重新渲染都执行useEffect