9.生命周期.html 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. <div id="root"></div>
  13. <script type="text/babel">
  14. let root = ReactDOM.createRoot(document.getElementById("root"));
  15. function App() {
  16. return (
  17. <div>
  18. <Flower />
  19. </div>
  20. )
  21. }
  22. class Flower extends React.Component {
  23. constructor(props) {
  24. super(props);
  25. this.state = {
  26. currentTime: new Date(),
  27. count: 0
  28. }
  29. }
  30. // 挂载
  31. componentDidMount() {
  32. console.log("挂载");
  33. this.timer = setInterval(() => {
  34. this.setState((state, props) => ({
  35. currentTime: new Date(),
  36. count: 2
  37. }))
  38. }, 1000)
  39. }
  40. // 更新
  41. componentDidUpdate() {
  42. console.log("更新")
  43. }
  44. // 卸载
  45. componentWillUnMount() {
  46. clearInterval(this.timer);
  47. }
  48. render() {
  49. return (
  50. <div>
  51. <h1>类组件</h1>
  52. <h2>{this.state.count}</h2>
  53. <h3>{this.state.currentTime.toLocaleString()}</h3>
  54. </div>
  55. )
  56. }
  57. }
  58. root.render(<App />);
  59. </script>
  60. </body>
  61. </html>