react实现时钟小案列

展示

在这里插入图片描述

撸代码

// 0. 新建组件Clock.js
// 1. 创建一个名称扩展自 React.Component 的ES6 类
// 2. 创建一个叫做render()的空方法
// 3. 将函数体移动到 render() 方法中
// 4. 为当前组件添加一个局部状态state
// 5. 给组件添加生命周期componentDidMount、componentWillUnmount
// 6. 编写一个updateTime的函数,里面设定定时器,并且更新时间
// 7. 在componentDidMount中调用updateTime函数
// 8. 在componentWillUnmount这个钩子中卸载定时器

import React from "react"

// 类组件,也称之为有状态组件
class Clock extends React.Component{			
    constructor(){
        // 使用this前必须调用super()
        super()
        // 定义当前组件的局部状态==> 相当于vue组件中的data
        this.state = {
            timer:new Date().toLocaleTimeString()
        }
    }
    updateTime(){
        this.interval = setInterval(()=>{
            // 使用setState方法来更新局部数据
            // setState() 传递一个对象 这个对象会和this.state这个对象进行浅合并
            this.setState({
                timer:new Date().toLocaleTimeString()
            })
        },100)
    }
    componentDidMount(){    // 组件挂载之后==>相当于vue中的 mounted
        this.updateTime()
    }
    componentWillUnmount(){   // 组件即将卸载==>相当于vue中的beforeDestroy 
        //卸载定时器
        clearInterval(this.interval)
    }
    
	//这是react生命周期中的一个钩子函数,这里会进行diff算法和更新虚拟dom
    render(){
        return (
            <fieldset>
                <legend>时钟,(ง •_•)ง奥力给!</legend>
                <h1>{this.state.timer}</h1>
            </fieldset>
        )
    }
}

// 导出
export default Clock
// 使用Clock组件
import Clock from "./Clock"

<Clock/>

简单补充

super()

1.在子类使用this之前 必须调用 super()方法 获取this正确的指向
2.调用super相当于调用了父类的构造函数
3.使用super必须以调用函数的形式使用或者访问属性的方式使用它,可以使用super直接调用父类的动态方法

函数组件、类组件

函数组件,称之为无状态组件
函数组件的数据来源,只能通过props接收,我们也经常把函数组件 称之为ui组件
类组件,也称之为有状态组件

diff算法

diff算法的作用
计算出Virtual DOM中真正变化的部分,并只针对该部分进行原生DOM操作,而非重新渲染整个页面。

传统diff算法
通过循环递归对节点进行依次对比,算法复杂度达到 O(n^3) ,n是树的节点数,这个有多可怕呢?——如果要展示1000个节点,得执行数10亿次比较,效率十分低下。即便是CPU能执行30亿条命令,也很难在一秒内计算出差异。

React的Diff算法
React把传统Diff的三个策略(Tree Diff、Component Diff、Element Diff)进行优化,将Diff复杂度从O(n^3)降到了O(n)。
React的Diff算法是在render里面进行计算的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你想要了解如何在React中创建一个时钟轮盘吗?我可以帮助你。首先,我们需要安装React并设置一个新的React项目。你可以使用以下命令来创建一个新的React项目: ```bash npx create-react-app clock-roulette ``` 然后,进入项目目录: ```bash cd clock-roulette ``` 现在,让我们开始编写代码。在src目录下创建一个新的文件ClockRoulette.js,并添加以下代码: ```jsx import React, { useState, useEffect } from 'react'; const ClockRoulette = () => { const [time, setTime] = useState(new Date()); useEffect(() => { const timer = setInterval(() => { setTime(new Date()); }, 1000); return () => clearInterval(timer); }, []); return ( <div> <h1>{time.toLocaleTimeString()}</h1> <p>{time.toLocaleDateString()}</p> </div> ); }; export default ClockRoulette; ``` 在上面的代码中,我们使用了React的函数式组件和useState、useEffect钩子函数。useState用于存储时间的状态,而useEffect用于启动一个定时器来更新时间。 接下来,在src目录下的App.js文件中,将默认的App组件替换为ClockRoulette组件: ```jsx import React from 'react'; import ClockRoulette from './ClockRoulette'; function App() { return ( <div className="App"> <ClockRoulette /> </div> ); } export default App; ``` 现在,运行以下命令启动React开发服务器: ```bash npm start ``` 你将在浏览器中看到一个包含实时时钟的页面。时钟将每秒更新一次。 这就是在React中创建一个简单的时钟轮盘的方法。你可以根据需要进行样式和布局的调整。希望这能对你有所帮助!如果你有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值