React經(jīng)典面試題之倒計時組件詳解
閑聊
關(guān)于面試大家常常吐槽:“面試造火箭,工作擰螺絲。”,從而表達(dá)了對工作內(nèi)容和能力要求匹配不一的現(xiàn)狀。
不排除有些公司想要探查候選人的技術(shù)上限或者說綜合技術(shù)能力,希望得到一個可拓展性更高的人才。也有些公司是不知道如何篩選候選人,所以隨便找了一些網(wǎng)上的面試題,各種原理,細(xì)枝末節(jié)的東西。不是說這些東西不好,但我覺得首要考察候選人是否能夠勝任該崗位,同時他如果能懂原理,還有細(xì)節(jié),那自然是錦上添花。
閑話聊完了,關(guān)于React我覺得能考察實(shí)際能力一道題:怎么實(shí)現(xiàn)一個倒計時組件。
倒計時組件——需求描述:
寫一個函數(shù)式組件CountDown,設(shè)置一個傳入最大值的屬性,每一秒減一,直到為0。
問題
- 怎么設(shè)計。
import { useState } from "react"
function CountDown({max = 10}){
const [count,setCount] = useState(max)
useEffect(()=>{
if(count>0){
setTimeout(()=>{
setCount(count-1)
},1000)
}
})
return <h1>{count}</h1>
}
export default CountDown- 如果我在父級改變了prop后要重置計數(shù)怎么做呢?
我們再用一個useEffect去進(jìn)行處理:
import { useState } from "react"
function CountDown({max = 10}){
const [count,setCount] = useState(max)
// 倒計時邏輯
useEffect(()=>{
if(count>0){
setTimeout(()=>{
setCount(count-1)
},1000)
}
})
// 重置計數(shù)
useEffect(()=>{
setCount(max)
},[max])
return <h1>{count}</h1>
}
export default CountDown- setTimeout可能會造成內(nèi)存泄露我們怎么處理呢?
通過useEffect的返回函數(shù)處理。
import { useState } from "react"
function CountDown({max = 10}){
const [count,setCount] = useState(max)
// 倒計時邏輯
useEffect(()=>{
let timer = null;
if(count>0){
timer = setTimeout(()=>{
setCount(count-1)
},1000)
}
return ()=>{
clearTimeout(timer)
}
})
// 重置計數(shù)
useEffect(()=>{
setCount(max)
},[max])
return <h1>{count}</h1>
}
export default CountDown最后
一個簡簡單單的組件還是包含了很多知識點(diǎn)的,不僅能夠考察候選人的基礎(chǔ)技術(shù)能力,還能考察他的一個邏輯思維能力。
到此這篇關(guān)于React經(jīng)典面試題之倒計時組件的文章就介紹到這了,更多相關(guān)React倒計時組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React中使用Workbox進(jìn)行預(yù)緩存的實(shí)現(xiàn)代碼
Workbox是Google Chrome團(tuán)隊(duì)推出的一套 PWA 的解決方案,這套解決方案當(dāng)中包含了核心庫和構(gòu)建工具,因此我們可以利用Workbox實(shí)現(xiàn)Service Worker的快速開發(fā),本文小編給大家介紹了React中使用Workbox進(jìn)行預(yù)緩存的實(shí)現(xiàn),需要的朋友可以參考下2023-11-11
JavaScript的React Web庫的理念剖析及基礎(chǔ)上手指南
這篇文章主要介紹了JavaScript的React Web庫的理念剖析及基礎(chǔ)上手指南,React Web的目的即是把本地的React Native應(yīng)用程序項(xiàng)目變?yōu)閃eb應(yīng)用程序,需要的朋友可以參考下2016-05-05
React虛擬渲染實(shí)現(xiàn)50個或者一百個圖表渲染
這篇文章主要為大家介紹了React虛擬渲染實(shí)現(xiàn)50個或者100個圖表渲染的實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
ReactNative實(shí)現(xiàn)的橫向滑動條效果
本文介紹了ReactNative實(shí)現(xiàn)的橫向滑動條效果,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),補(bǔ)充介紹了ReactNative基于寬度變化實(shí)現(xiàn)的動畫效果,感興趣的朋友跟隨小編一起看看吧2024-02-02
react-native DatePicker日期選擇組件的實(shí)現(xiàn)代碼
本篇文章主要介紹了react-native DatePicker日期選擇組件的實(shí)現(xiàn)代碼,具有一定的參考價值,有興趣的可以了解下2017-09-09

