1.react的创建项目
$ cnpm install -g create-react-app
$ create-react-app my-app
$ cd my-app/
$ npm start
项目的架构:
在index.js渲染react组件的页面
在App.js里面写登录登录页和home页面
router.js静态路由,需要自己使用函数,去匹配
跨域:参考第11条
路由导航守卫:参考14条
知识点:数据的监听:类似watch,computed,的使用,redux
2.react创建组件的方式,一个是用class,一个是函数方式声明的,函数式组件没有state这个属性,用这个属性,请选用class方式声明。
app.js是使用函数式声明的组件
3.使用js和jsx,写法是一样的,引用组件的方式也是一样的
4.在标签里面绑定事件的方法
5.jsx可以防止XSS注入攻击
6.Babel会吧jsx转译为一个名为React.creatElement()函数调用
7.react下载路由
npm install --save react-router react-router-dom
8.React 的Router的使用方法
js的方式:动态的切换路由 this.props.history.push('/login')
html方式:
<Router> //需要包在最外层
<Route />
<Link></Link> 跳转页面
</Router>
1.Router包在最外层
2.layout左侧silder的Link是菜单的标签
3.layout右侧的main的组件的切换
router的渲染菜单栏,多条数据需要使用函数map循环数据
根据路由地址,渲染路由匹配的组件,跟vue的不同是,vue,只需要提供一个
<router-view></router-view>一个路由出口,就可以根据路由的地址,准确的渲染出路由匹配的组件,而react需要自己去处理数据,进行数据的渲染,匹配路由的组件
9.src下面的index.js是react项目的入口文件
10.src下面的pages,是用来写每个页面的组件的
11.react解决跨域 参考www.cnblogs.com/anin/p/1355… 重点:配置完需要重启项目,否则不生效,将setupProxy引入到入口文件index.js当中
12.react.js的this问题
正确使用函数的方法:改变this的指向,在react里面,类的方法默认不会绑定this函数
1.在constructor里面进行事件的绑定
2.使用箭头函数
13.react 路由的跳转,this.props没有history这个属性解决方案
知识点:高阶组件中的withRouter, 作用是将一个组件包裹进Route里面, 然后react-router的三个对象history, location, match就会被放进这个组件的props属性中.
1.react的方法:在引入,页面里面引用 import { withRouter } from 'react-router-dom'
导出的时候 export default withRouter(SiderDemo) 需要用withRouter包裹一下当前组件的名称
2.可以使用原生js
window.location.href = '路径';
window.open('about:blank').location.href = '路径';
14.路由导航:在登录页面的componentWillMount的生命周期,简单的判断是否有token,如果有,直接跳转页面,否则,在登录页面
15.基于axios进行二次网络请求
1.在request里面,需要return request,把token放在header里面
2.在respone里面,需要return respone,根据返回值,判断是否需要跳转到首页
16.react监听数据变化
17.Hook
可以在不编写class的情况下,也就是函数式编程使用state以及其他的react特性,
常见的HOOK与class的区别
HOOK:
1.useState:是替换,不是合并
useState返回一对:当前状态值和允许你更新状态的函数
2.useEffect:取代生命周期
3.useContext:跨组件共享数据
4.useCallback:性能优化
5.useMemo:性能优化
6.useRef
Class:
1.this.setState 是合并
18.父组件引入子组件,引入之后,可以直接使用