中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

react如何實現紅綠燈

發布時間:2023-01-29 09:45:52 來源:億速云 閱讀:120 作者:iii 欄目:web開發

本篇內容介紹了“react如何實現紅綠燈”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

react實現紅綠燈的方法:1、引入“import React, { useEffect, useState } from 'react'”;2、創建“function App() {...}”方法;3、定義所有燈信息map;4、定義燈閃爍的方法為“const twinkleFn = ()=>{...}”;5、設置紅綠黃顏色樣式即可。

用React實現紅綠燈

用 React 實現一個信號燈(交通燈)控制器,要求:

默認情況下,紅燈亮20秒,并且最后5秒閃爍綠燈亮20秒,并且最后5秒閃爍黃燈亮10秒, 次序為:紅-綠-黃-紅-綠-黃。 燈的個數、顏色、持續時間、閃爍時間、燈光次序都可配置,如:lights=[{color: '#fff', duration: 10000, twinkleDuration: 5000}, ... ]

import React, { useEffect, useState } from 'react'
import './index.scss'
function App() {
  // 定義當前燈的顏色
  const [currentLight, setCurrentLight] = useState('red')
  // 定義當前燈在燈列表數據中的index
  const [lightOn, setLightOn] = useState(2)
  
  // 所有燈信息map
  const lights=[
    {
      color: 'red', 
      lightTimer: 5000,
      duration: 1000, 
      twinkleDuration: 5000
    },
    {
      color: 'green', 
      lightTimer: 4000,
      duration: 1000, 
      twinkleDuration: 5000
    },
    {
      color: 'yellow', 
      lightTimer: 3000,
      duration: 1000, 
      twinkleDuration: 0
    }
  ]
  
  // 改變當前燈在燈map列表的index
  const changeLightFn = () => {
    setLightOn((lightOn + 1) % 3)
  }
  
  // 燈閃爍的方法
  const twinkleFn = ()=>{
    // 閃爍的次數
    let twinkle_count = 0;
    // 用setInterval定時調用設置等的顏色,實現當前燈顏色亮滅交替閃爍
    let timer = setInterval(()=>{
      // 如果閃爍次數的當前值大于等于當前燈的閃爍時間,就清除計數器,進入下一個燈的列表位置
      if (twinkle_count >= lights[lightOn].twinkleDuration/1000) {
        changeLightFn()
        setCurrentLight('') // 等的顏色清空,顯示默認灰色
        clearInterval(timer)
        return
      }
      if (twinkle_count % 2 === 0) {
        setCurrentLight(lights[lightOn].color) // 燈亮
      } else {
        setCurrentLight('') // 燈滅
      }
      twinkle_count++ // 燈的當前閃爍次數累加
    }, lights[lightOn].duration)
  }
  useEffect(()=>{
    setCurrentLight(lights[lightOn].color) // 設置當前燈的顏色 -- 燈亮
    setTimeout(()=>{
      twinkleFn()
    }, lights[lightOn].lightTimer) // 當達到前燈亮持續的時間,開始調用燈閃爍的方法
  }, [lightOn])
  
  return (
    <div>
      {
        lights.map((item, index) => {
          return (
            <p key={index}><span className={`light ${item.color === currentLight ? item.color : ''}`}></span></p>
          )
        })
      }
    </div>
  );
}
export default App
.light {
    display: inline-block;
    width: 100px;
    height: 100px;
    border-radius: 50%;
    background: gray;
}
.red {
    background-color: red;
}
.green {
    background-color: green;
}
.yellow {
    background-color: yellow;
}

“react如何實現紅綠燈”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东辽县| 扶绥县| 宽城| 泽库县| 天水市| 任丘市| 广安市| 灵武市| 临清市| 来安县| 禹城市| 健康| 宾川县| 浦江县| 富源县| 新竹县| 尤溪县| 富锦市| 新兴县| 怀来县| 泗洪县| 阳城县| 凌源市| 南溪县| 保靖县| 康平县| 宜良县| 上饶市| 易门县| 秦皇岛市| 黔西| 馆陶县| 邻水| 尚志市| 乌审旗| 蓝山县| 会宁县| 休宁县| 望都县| 加查县| 嘉荫县|