網(wǎng)站首頁(yè) 編程語言 正文
閑聊
關(guān)于面試大家常常吐槽:“面試造火箭,工作擰螺絲。”,從而表達(dá)了對(duì)工作內(nèi)容和能力要求匹配不一的現(xiàn)狀。
不排除有些公司想要探查候選人的技術(shù)上限或者說綜合技術(shù)能力,希望得到一個(gè)可拓展性更高的人才。也有些公司是不知道如何篩選候選人,所以隨便找了一些網(wǎng)上的面試題,各種原理,細(xì)枝末節(jié)的東西。不是說這些東西不好,但我覺得首要考察候選人是否能夠勝任該崗位,同時(shí)他如果能懂原理,還有細(xì)節(jié),那自然是錦上添花。
閑話聊完了,關(guān)于React我覺得能考察實(shí)際能力一道題:怎么實(shí)現(xiàn)一個(gè)倒計(jì)時(shí)組件。
倒計(jì)時(shí)組件——需求描述:
寫一個(gè)函數(shù)式組件CountDown,設(shè)置一個(gè)傳入最大值的屬性,每一秒減一,直到為0。
問題
- 怎么設(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>
通過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è)邏輯思維能力。
原文鏈接:https://juejin.cn/post/7080388529355767821
相關(guān)推薦
- 2022-05-29 Linux系統(tǒng)通過Docker安裝SQL?Server數(shù)據(jù)庫(kù)_docker
- 2022-08-16 Hive?HQL支持2種查詢語句風(fēng)格_數(shù)據(jù)庫(kù)其它
- 2022-04-04 react報(bào)錯(cuò)‘react-scripts‘ 不是內(nèi)部或外部命令,也不是可運(yùn)行的程序
- 2022-03-08 SQL實(shí)現(xiàn)分頁(yè)查詢方法總結(jié)_數(shù)據(jù)庫(kù)其它
- 2022-09-07 C++實(shí)現(xiàn)哈希散列表的示例_C 語言
- 2023-07-24 前端實(shí)現(xiàn)電子簽名(web、移動(dòng)端)通用
- 2024-03-20 解決npm install遇到的問題:Error while executing:
- 2022-09-06 C語言超詳細(xì)講解猜數(shù)字游戲的實(shí)現(xiàn)_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支