react类组件知识点

109 阅读1分钟

生命周期函数

componentWillMount()

只会在装载之前调用一次,在render之前调用

componentDidMount()

该方法会在组件已经被渲染到DOM中后运行;(相当于vue的mounted)

在render之后调用;开始可以通过 ReactDOM.findDOMNode(this)获取到组件的 DOM 节点

更新组件触发:

  • componentWillReceiveProps
  • shouldComponentUpdate
  • componentWillUpdate
  • componentDidUpdate

componentWillReceiveProps(nextProps)

在组件接收到一个新的prop(更新后)时被调用,该方法在初始化render时不被调用;

只有一个参数nextProps,下一次的props;在这里可以根据props操作setState()

componentWillUpdate(nextProps, nextState)

在组件接收到新的props或者state但还没有render时被调用。在初始化时不会被调用;不能操作setState()

componentDidUpdate(prevProps, prevState, snapshot)

在组件完成更新后立即调用。在初始化时不被调用;组件重新渲染并且把更改变更到真实的 DOM 以后调用

有三个参数,上一次的props,上一次的state,和快照;

可以在这进行DOM操作、直接调用setState();但在操作setState()时必须放在条件语句里面,不然会死循环;

image.png

image.png

componentWillUnmount()

组件即将销毁时会运行;

在react项目中引入 Sass

create-react-app创建的react项目,默认就是支持Sass的,使用只需要安装一下node-sass这个包即可使用

npm install node-sass -D

propTypes:定义传参的类型检查

Son.propTypes = {

  optionalArray: PropTypes.array,//检测数组类型

  optionalBool: PropTypes.bool.isRequired,//检测布尔类型(表示该参数是必穿的)

  optionalFunc: PropTypes.func,//检测函数(Function类型)

  optionalNumber: PropTypes.number,//检测数字

  optionalObject: PropTypes.object,//检测对象

  optionalString: PropTypes.string,//检测字符串

  optionalSymbol: PropTypes.symbol,//ES6新增的symbol类型

type: PropTypes.any, // 任何类型

}