怎样创建网站赚钱,国内免备案网站空间,怎么做电商,国家重点项目建设部网站使用过useState#xff0c;也使用过ahook的useSetState#xff0c;我们知道useState和useSetState左边赋值的第一个参数是接收初始值的变量和设置变量的方法#xff0c;这里左边用的是数组解构实现的。所以#xff0c;这里我们想一下#xff0c;如何自定义一个hooks#…使用过useState也使用过ahook的useSetState我们知道useState和useSetState左边赋值的第一个参数是接收初始值的变量和设置变量的方法这里左边用的是数组解构实现的。所以这里我们想一下如何自定义一个hooks也可以像useState和useSetState那样呢
[a, setA] useState();
按我个人的理解react自定义hooks其实就是个函数函数里可以使用useState、useSetState、useEffect可以任意返回结果。下面我们以hooks的useBoolean为例我写一个hooks。
1.写一个hooks import {useEffect, useState} from react;function useBoolean(b: boolean true): any {const [B, setB] useState(false);const toggle () setB(!B);const set () setB(b);const setTrue () setB(true);const setFalse () setB(false);useEffect(() {setB(b);}, []);return [B, { toggle, set, setTrue, setFalse }];
};export default useBoolean;
我们定义一个useBoolean的函数函数使用useState定义一个B变量和setB方法用于改变状态给B赋一个初始值false在useEffect里设置调用useBoolean时赋的值然后返回一个数组数组的值分别是B变量包含toggle, set, setTrue, setFalse等设置B变量的方法。至此一个简单的hooks就实现了。
2.使用
const [B, { toggle, set, setTrue, setFalse }] useBoolean();
console.log(B, new Date().getTime())
这里调用useBoolean然后输出B变量会发现B变量输出了两次问题出在哪呢原来是useBoolean hooks里的useEffect赋了值导致的。所以我们改进一下注释掉useEffect把const [B, setB] useState(false);改成const [B, setB] useState(b);不使用useEffect去赋B变量初始值了。
import {useEffect, useState} from react;function useBoolean(b: boolean true): any {const [B, setB] useState(b);const toggle () setB(!B);const set () setB(b);const setTrue () setB(true);const setFalse () setB(false);// useEffect(() {// setB(b);// }, []);return [B, { toggle, set, setTrue, setFalse }];
};export default useBoolean;