React类式组件生命周期
2022/3/4 6:17:43
本文主要是介绍React类式组件生命周期,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
React 类式组件生命周期
1. 首次加载时
1) contructor
类式组件的构造器,可在构造器中初始化组件状态( state )
2) getDerivedStateFromProps
state的值在任何时候
都取决于props( props变化时更新state ),接收两个参数props
、state
3) render
渲染函数,返回vnode
4) componentDidMount
组件第一次
被渲染到DOM中,可在此钩子中设置定时器,调用AJAX
2. 更新时
1) getDerivedStateFromProps
2) shouldComponentUpdate
根据return的布尔值
决定是否更新组件
3) render
4) getSnapshotBeforeUpdate
获取更新前的快照,其返回值默认作为componentDidUpdate
第三个参数
5) componentDidUpdate
组件更新之后,其可接收三个参数未更新前的props
、未更新前的state
、getSnapshotBeforeUpdate的返回值
3. 卸载时
1) componentWillUnmount
组件即将卸载之前调用的钩子,可在此阶段销毁定时器
4. Demo
import { Component, Fragment } from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; class Demo extends Component { constructor(props) { super(props); this.state = { title: 'This is a initial demo.' }; console.log('constructor'); } static getDerivedStateFromProps(props, state) { console.log('getDerivedStateFromProps'); return { subTitle: props.subTitle }; } componentDidMount() { console.log('componentDidMount'); } getSnapshotBeforeUpdate() { console.log('getSnapshotBeforeUpdate'); return { snapshotRes: 'getSnapshotBeforeUpdate' }; } shouldComponentUpdate() { console.log('shouldComponentUpdate'); return true; } componentDidUpdate(preProps,preState,snapshotValue) { console.log('componentDidUpdate'); } componentWillUnmount() { console.log('componentWillUnmount'); } /** * 使用箭头函数,防止找不到this */ updateComponent = () => { this.forceUpdate(); } unmountComponent = () => { unmountComponentAtNode(document.querySelector('#app')); } render() { console.log('render'); const { title, subTitle } = this.state; return ( <Fragment> <h1>{ title }</h1> <h2>{ suTitle }</h2> <button onClick={ this.updateComponent }>Force update</button> <button onClick={ this.unmountComponent }>Unmount component</button> </Fragment> ) } } render(<Demo suTitle="Alison" />, document.querySelector('#app'));
这篇关于React类式组件生命周期的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04React 19 来了!新的编译器简直太棒了!
- 2025-01-032025年Node.js与PHP大比拼:挑选最适合的后端技术进行现代web开发
- 2025-01-03?? 用 Gemini API、Next.js 和 TailwindCSS 快速搭建 AI 推文生成项目 ??
- 2024-12-31Vue CLI多环境配置学习入门
- 2024-12-31Vue CLI学习入门:一步一步搭建你的第一个Vue项目
- 2024-12-31Vue3公共组件学习入门:从零开始搭建实用组件库
- 2024-12-31Vue3公共组件学习入门教程
- 2024-12-31Vue3学习入门:新手必读教程
- 2024-12-31Vue3学习入门:初学者必备指南
- 2024-12-30Vue CLI多环境配置教程:轻松入门指南