React 生命周期
React 16.8+的生命周期分为三个阶段,分别是挂载阶段、更新阶段、卸载阶段。
一,挂载阶段
1.constructor: 构造函数,最先被执行,我们通常在构造函数里初始化state对象或者给自定义方法绑定this
2.getDerivedStateFromProps:static getDerivedStateFromProps(nextProps,prevstate),这是静态方法,当我们接收到新的属性想去修改state,可以使用getDerivedStateFromProps
3.render:render函数是纯函数,只返回需要渲染的东西,不应该包含其他的业务逻辑,可以返回原生的DOM,React组件,Fragment,Portals,字符串和数字,Boolean和null等内容
4.componentDidMount:组件装载之后调用,此时可以获取到DOM节点并操作,比如对canvas,svg的操作,服务器请求,订阅都可以写在这个里面,但是记得在componentWillUnmount中取消订阅,
二,更新阶段
1.getDerivedStateFromProps: 此方法在更新个挂载阶段都可能会调用
2.shouldComponentUpdate: shouldComponentUpdate(nextProps, nextState),有两个参数nextProps和nextState,表示新的属性和变化之后的state,返回一个布尔值,true表示会触发重新渲染,false表示不会触发重新渲染,默认返回true,我们通常利用此生命周期来优化React程序性能
3.componentDidUpdate: componentDidUpdate(prevProps, prevState, snapshot),该方法在getSnapshotBeforeUpdate方法之后被调用,有三个参数prevProps,prevState,snapshot,表示之前的props,之前的state,和snapshot。第三个参数是getSnapshotBeforeUpdate返回的,如果触发某些回调函数时需要用到 DOM 元素的状态,则将对比或计算的过程迁移至getSnapshotBeforeUpdate,然后在 componentDidUpdate中统一触发回调或更新状态。
四,卸载阶段
1.componentWillUnmount: 当组件被卸载或者销毁了就会调用,我们可以在这个函数里去清除一些定时器,取消网络请求,清理无效的DOM元素等垃圾清理工作。
二,react基础语法
jax
1.只有一个根节点
2.{}js表达式
3.{/注释内容/}
4.className定义类名
5.样式对象自动展开
6.数组 可以包含html,并自定展开
react组件
1.函数组件:
function App(){
return <div>...</div>
}
export default App;
2.类组件:
import React,{Componet} from 'react'
class App extends Componet{
constuctor(props){
super(props)
}
state = {num:5}
render(){
return <div></div>
}
}
export default App
组件区别
函数
1.函数组件通常展示
2.类组件可以有state 管理是数据用类组件
3.函数组件没有this
4.函数组件没有生命周期
类组件
1.类组件通常作为容器
2.函组件没有state
3.类组件有this
4.类组件有生命周期
三,模板语法
一,文本
1.普通文本
{文本内容}
2.html文本
<div dangerouslySetInnerHTML={{__html:文本}}></div>
3.条件渲染
{flag&&<h1>为true显示</h1>}
{flag?'true显示':'false显示'}
4.列表渲染
{list.map(item=><h3 key={item}>{item}</h3>)}