9.生命周期.html 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <script src="./babel.min.js"></script>
  8. <script src="./react.development.js"></script>
  9. <script src="./react-dom.development.js"></script>
  10. </head>
  11. <body>
  12. <!-- 单根元素 -->
  13. <div id="root"></div>
  14. <script type="text/babel">
  15. const root = ReactDOM.createRoot(document.getElementById("root"));
  16. // 创建 挂载 更新 卸载
  17. // npm install
  18. // npm uninstall
  19. // 组件 => 组件实例
  20. class Good extends React.Component {
  21. constructor(props) {
  22. // props和state都可以改变页面
  23. // props只读 不修改
  24. // state 修改
  25. super(props);
  26. this.state = {
  27. currentTime:new Date(),
  28. aa:'1111',
  29. }
  30. }
  31. // 挂载
  32. componentDidMount() {
  33. console.log("挂载");
  34. // 更新数据 this.setState({})
  35. this.timer = setInterval(()=>{
  36. this.setState({
  37. currentTime: new Date()
  38. })
  39. },1000)
  40. }
  41. // 更新 => 数据改变了
  42. componentDidUpdate() {
  43. console.log("更新")
  44. }
  45. // 销毁
  46. componentDidUnMount() {
  47. console.log("销毁")
  48. clearInterval(this.timer);
  49. }
  50. render() {
  51. return(
  52. <div>
  53. <p>{this.state.aa}</p>
  54. <h1>当前时间:{this.state.currentTime.toLocaleString()}</h1>
  55. </div>
  56. )
  57. }
  58. }
  59. root.render(<Good/>)
  60. </script>
  61. </body>
  62. </html>