1、React脚手架开发
命令
npx create-react-app my-app
cd my-app
npm start
安装后目录结构留:
启动:npm start
安装react插件
2、组件
新建一个组件文件夹,用默认暴露,在app.js中直接引入,组件名首字母大写
rcc自动生成类组件,类组件可以使用内部数据,在constructor里创建
rfc自动生成函数组件,没有自带可使用的state内部数据
定义的函数首字母要大写
取state的值解构更快
只要setState,render重新渲染
3、组件分离
组件建成文件夹,包含html,js,css
定义一个函数组件
引用组件+传参
4、第三方包
nrm test
nrm use taobao (选最快的)
nrm test (带星号的表示选用的)
5、组件通讯
父传子
react任意数据类型都可传,函数也可
父组件
子组件
子传父
父组件
子组件
兄弟组件传参
父组件
兄弟A,带参用箭头函数
跨组件通讯
在utils.js文件里创建一次context对象即可
6、Refs
利用类组件创建refs--创建refs先super实例化
利用refs操作dom
利用refs操作组件实例
7、React生命周期
常用
不常用
利用类组件+生命周期创建电子时钟示例
8、Hooks
介绍
均以use开头
useState hook
实现函数组件里有可操作的内部数据,setCount是方法,用驼峰命名,点击时调用,故用箭头函数
示例
更新对象值,用浅拷贝展开改
useEffect hook
不同的语法类似对应不同的生命周期
rfc--电子时钟
优化
关闭时钟
rfc组件更新,代码执行流程,只要刷新,整个组件再次执行,所以return之前只写const调用的,其他的log等每次点击都会执行,导致性能低
useContext hook
useRef hook
useMemo hook
官方解释
示例理解,useMemo一般不用,性能优化时使用,写后面的依赖值,刷新依赖值的改变,而不是随组件一起刷新
useCallback hook
预备知识--高阶组件
用法-性能优化--memo包裹子组件
只要更新条件不变,子组件就不随父组件刷新而刷新
props也可解构
useCallback
可实现性能优化,由于子组件接收函数参数时,由于函数是复杂数据类型,也会随父组件更新,利用useCallback可以缓存函数,函数参数没变,则子组件也不会刷新
自定义hooks
自定义hooks,封装起来便于复用
引用自定义hooks
rfc+发fetch请求 渲染商品列表
请求方法有ajax,axios库(需要安装),fetch->promise(不用安装)
具体实现
网络hooks封装
引用
9、路由
前面知识总结
Vue路由
React路由
安装 npm install react-router-dom
NavLink和Link
重定向路由
嵌套路由
全局404路由
编程式导航与传参
跳转路由且需要传参时使用
10、后台管理系统案例
各页面分别建立文件夹便于管理组件
不同文件样式调用时同名的会相互影响,react没有scoped,需做如下处理,(react兼容scss,需安装 npm i sass -D)
登录+网络请求引入
首页
菜单列表跳转
用嵌套路由
内容显示
11、移动端Tabbar案例
利用高阶组件实现Tabbar
定义高阶组件Tabbar
引用Tabbar