class Child3 extends Component{ state = { count:1 } static getDerivedStateFromProps(props, nextState) { console.log(1,"将props中的数据映射到state中",props); return props;//返回值 ,是根据props 要映射到state中的值 } shouldComponentUpdate(nextProps, nextState) { console.log("props",this.props,nextProps); console.log("state", this.props, nextState); console.log(2,"判断当前组件是否需要更新"); return true;//true 继续完成当前组件更新,false 中断当前组件更新 } //获取更新前的DOM快照 必需加上componentDidUpdate getSnapshotBeforeUpdate(prevProps, prevState) { console.log(4,"获取DOM更新前的快照"); //已经构建好新的虚拟DOM即将去更新真实DOM return document.querySelector("#info").innerHTML; } //处理副作用(请求) prevDom=getSnapshotBeforeUpdate return componentDidUpdate(prevProps, prevState, prevDom) { console.log(5,"组件列新完成",prevDom); } render() { console.log(3,"构建虚拟DOM"); const { count,parentInfo} = this.state; return <> <p id="info">count:{count}------parentInfo:{parentInfo}</p> <button onClick={ () => { this.setState({ count:count+1 }) } } > 递增count</button> </> } }