React Hooks 的实现 - useBoolean
- Published on
- — 138 Words
- Authors
- Name
- Richard Shih
- @realshiddong
实现需求
实现一个支持在两个 Boolean 值状态之间切换的 hook.
实现思路
入参与出参的设计
提供如下接口:
function useBoolean(initialValue?: boolean): [boolean, (value?: boolean) => void]
代码设计
提供一个 toggle 方法,通过判断是否传值来进行更新。
- 若调用时没有传值,则将当前值取反 !prevValue
- 若调用时有传值,则将当前值设置为传入值
function useBoolean(initialValue: boolean = false) {
const [value, setValue] = useState<boolean>(initialValue)
const toggle = useCallback((value?: boolean) => {
if (typeof value === 'undefined') {
setValue((prevValue) => !prevValue)
} else {
setValue(value)
}
}, [])
return [value, toggle]
}