在项目开发中,如何实现一个自定义 Hook?
在React中实现自定义Hook的步骤:
在函数内部使用基础Hook组合逻辑
const [value, setValue] = useState(initialValue);
useEffect(() => {
// 副作用逻辑
}, [dependency]);
// 使用示例
function Component() {
const { value, updateValue } = useCustomHook();
// ...
}
典型应用场景:
注意事项:
示例:实现localStorage同步的Hook
function useLocalStorage(key, initialValue) {
const [storedValue, setStoredValue] = useState(() => {
try {
const item = window.localStorage.getItem(key);
return item ? JSON.parse(item) : initialValue;
} catch (error) {
return initialValue;
}
});
const setValue = value => {
try {
const valueToStore = value instanceof Function ? value(storedValue) : value;
setStoredValue(valueToStore);
window.localStorage.setItem(key, JSON.stringify(valueToStore));
} catch (error) {
console.log(error);
}
};
return [storedValue, setValue];
}
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
自定义 Hook 是一种复用逻辑的方式,可以将组件中的状态逻辑提取到可重用的函数中。
示例代码:
口语化解释:这个自定义 Hook
useWindowWidth
用于获取窗口的宽度,并在窗口大小变化时更新宽度。