網(wǎng)站首頁 編程語言 正文
閑聊
關(guān)于面試大家常常吐槽:“面試造火箭,工作擰螺絲。”,從而表達了對工作內(nèi)容和能力要求匹配不一的現(xiàn)狀。
不排除有些公司想要探查候選人的技術(shù)上限或者說綜合技術(shù)能力,希望得到一個可拓展性更高的人才。也有些公司是不知道如何篩選候選人,所以隨便找了一些網(wǎng)上的面試題,各種原理,細枝末節(jié)的東西。不是說這些東西不好,但我覺得首要考察候選人是否能夠勝任該崗位,同時他如果能懂原理,還有細節(jié),那自然是錦上添花。
閑話聊完了,關(guān)于React我覺得能考察實際能力一道題:怎么實現(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去進行處理:
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
最后
一個簡簡單單的組件還是包含了很多知識點的,不僅能夠考察候選人的基礎(chǔ)技術(shù)能力,還能考察他的一個邏輯思維能力。
原文鏈接:https://juejin.cn/post/7080388529355767821
相關(guān)推薦
- 2022-04-18 react中在元素中插入多個類名, 多個狀態(tài)之間的類名切換等
- 2021-12-18 ECommerceCrawlers項目分析(十二)
- 2022-07-13 Andorid 自定義 View - 自定義屬性 - 屬性重復(fù)導(dǎo)致沖突
- 2022-08-30 MongoDB數(shù)據(jù)庫基礎(chǔ)知識整理_MongoDB
- 2022-05-11 tomcat啟動時提示端口被占用解決辦法
- 2022-11-03 關(guān)于golang?test緩存問題_Golang
- 2022-05-04 Jupyter?notebook運行后打不開網(wǎng)頁的問題解決_python
- 2022-11-08 PostgreSQL查看帶有綁定變量SQL的通用方法詳解_PostgreSQL
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支