1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>Document</title>
- <script src="../../babel.min.js"></script>
- <script src="../../react.development.js"></script>
- <script src="../../react-dom.development.js"></script>
- </head>
- <body>
- <div id="root"></div>
- <script type="text/babel">
- const root = ReactDOM.createRoot(document.querySelector('#root'));
- class Clock extends React.Component {
- constructor(props) {
- super(props);
- this.state = {
- now: new Date(),
- };
- }
- // 给组件添加生命周期 就是给组件实例添加对应钩子方法即可
- componentDidMount() {
- this.timer = setInterval(() => {
- // 更新状态 now
- // 在React中 响应式的更新状态的 唯一方式:调用组件实例的setState方法。setState方法在修改状态的时候 就是 新值 与 旧值合并后再覆盖掉旧状态
- this.setState({ now: new Date() });
- }, 1000);
- }
- componentDidUpdate() {
- console.log('comp updated');
- }
- componentWillUnmount() {
- clearInterval(this.timer);
- }
- render() {
- return <h3>当前时间为:{this.state.now.toLocaleString()}</h3>;
- }
- }
- root.render(<Clock />);
- </script>
- </body>
- </html>
|