React Hooks 自定义封装是 React 开发中的重要技巧,它可以帮助我们抽离复用逻辑,让组件代码更加简洁。下面我将介绍自定义 Hooks 的基本概念和几个实用的示例。
use
开头,这是 React 的约定这个 Hook 可以简化表单处理逻辑,包括值的管理和表单提交:
使用示例:
function LoginForm() {
const { values, handleChange, handleSubmit } = useForm(
{ username: '', password: '' },
(formData) => {
console.log('提交表单:', formData);
// 处理登录逻辑
}
);
return (
<form onSubmit={handleSubmit}>
<input
name="username"
value={values.username}
onChange={handleChange}
placeholder="用户名"
/>
<input
name="password"
type="password"
value={values.password}
onChange={handleChange}
placeholder="密码"
/>
<button type="submit">登录</button>
</form>
);
}
这个 Hook 可以将状态与 localStorage 同步:
使用示例:
function ThemeSwitcher() {
// 使用自定义Hook,自动与localStorage同步
const [theme, setTheme] = useLocalStorage('app-theme', 'light');
const toggleTheme = () => {
setTheme(prev => prev === 'light' ? 'dark' : 'light');
};
return (
<div className={theme}>
<p>当前主题: {theme}</p>
<button onClick={toggleTheme}>切换主题</button>
</div>
);
}
这个 Hook 可以简化数据请求逻辑:
使用示例:
function UserList() {
const { data: users, loading, error, refetch } = useFetch(
'https://jsonplaceholder.typicode.com/users'
);
if (loading) return <div>加载中...</div>;
if (error) return <div>错误: {error} <button onClick={refetch}>重试</button></div>;
return (
<div>
<h2>用户列表</h2>
<button onClick={refetch}>刷新</button>
<ul>
{users?.map(user => (
<li key={user.id}>{user.name}</li>
))}
</ul>
</div>
);
}
use
开头,便于识别和遵循 Hooks 规则通过自定义 Hooks,我们可以有效地组织和复用 React 组件中的状态逻辑,使代码更加清晰、可维护。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。