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

