使用SetTimeout和ReactHooks的TrafficLight是一个模拟交通信号灯的小组件。它可以通过使用ReactHooks来管理组件的状态,并使用SetTimeout函数来模拟交通信号灯的变化。
首先,我们需要引入React和useState、useEffect这两个ReactHooks:
import React, { useState, useEffect } from 'react';
然后,我们可以创建一个TrafficLight组件,并在组件中定义三个状态变量:red、yellow和green,它们分别表示红灯、黄灯和绿灯的状态。初始状态可以设置为false,表示灯是关闭的:
const TrafficLight = () => {
const [red, setRed] = useState(false);
const [yellow, setYellow] = useState(false);
const [green, setGreen] = useState(false);
// 状态变化的逻辑
useEffect(() => {
// 红灯亮10秒后变绿灯
const redTimeout = setTimeout(() => {
setRed(true);
setYellow(false);
setGreen(false);
}, 10000);
// 绿灯亮5秒后变黄灯
const greenTimeout = setTimeout(() => {
setRed(false);
setYellow(true);
setGreen(false);
}, 15000);
// 黄灯亮2秒后变红灯
const yellowTimeout = setTimeout(() => {
setRed(false);
setYellow(false);
setGreen(true);
}, 17000);
// 组件卸载时清除定时器
return () => {
clearTimeout(redTimeout);
clearTimeout(greenTimeout);
clearTimeout(yellowTimeout);
};
}, []);
// JSX代码
return (
<div>
<div className={`light ${red ? 'red' : ''}`}></div>
<div className={`light ${yellow ? 'yellow' : ''}`}></div>
<div className={`light ${green ? 'green' : ''}`}></div>
</div>
);
};
在上面的代码中,我们使用了useEffect钩子来处理状态变化的逻辑。在组件挂载时,我们使用setTimeout函数来模拟交通信号灯的变化过程。每个定时器都会在一定的时间后触发,并更新相应的状态变量。最后,我们使用return语句来清除定时器,以防止内存泄漏。
在JSX代码中,我们根据状态变量的值来动态添加或移除相应的类名,从而控制交通信号灯的显示。
这个TrafficLight组件可以在交通管理系统、模拟器或教育应用中使用,以展示交通信号灯的工作原理和变化过程。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云