Skip to main content

介绍

LynKit Hooks 是一个实用的 React Hooks 集合,旨在简化 React 应用开发,提高代码复用性和可维护性。这些钩子涵盖了状态管理、DOM 交互、异步操作等多个方面。

特点

  • 专注解决方案 - 每个 Hook 专注解决特定问题
  • 轻量级 - 无外部依赖,体积小
  • 类型安全 - 完整的 TypeScript 类型定义
  • 测试覆盖 - 全面的单元测试保证质量
  • 文档完善 - 详细的使用示例和 API 说明

Hook 列表

状态管理

生命周期

DOM 交互

网络和异步

时间和定时器

杂项

安装

npm install @lynkit/hooks

使用示例

useSetState

import { useSetState } from '@lynkit/hooks';

function UserForm() {
const [state, setState] = useSetState({
name: '',
email: '',
age: 0,
address: {
city: '',
street: ''
}
});

const handleNameChange = (e) => {
setState({ name: e.target.value });
};

const handleAddressChange = (e) => {
setState({
address: {
...state.address,
[e.target.name]: e.target.value
}
});
};

return (
<div>
<input
value={state.name}
onChange={handleNameChange}
placeholder="姓名"
/>
<input
name="city"
value={state.address.city}
onChange={handleAddressChange}
placeholder="城市"
/>
<input
name="street"
value={state.address.street}
onChange={handleAddressChange}
placeholder="街道"
/>
<pre>{JSON.stringify(state, null, 2)}</pre>
</div>
);
}

useInterval

import { useState } from 'react';
import { useInterval } from '@lynkit/hooks';

function Timer() {
const [count, setCount] = useState(0);
const [delay, setDelay] = useState(1000);
const [isRunning, setIsRunning] = useState(true);

useInterval(() => {
setCount(count + 1);
}, isRunning ? delay : null);

return (
<div>
<h1>计数: {count}</h1>
<button onClick={() => setIsRunning(!isRunning)}>
{isRunning ? '暂停' : '继续'}
</button>
<input
type="number"
value={delay}
onChange={(e) => setDelay(Number(e.target.value))}
disabled={!isRunning}
/>
</div>
);
}

usePrevious

import { useState } from 'react';
import { usePrevious } from '@lynkit/hooks';

function Counter() {
const [count, setCount] = useState(0);
const previousCount = usePrevious(count);

return (
<div>
<p>当前值: {count}</p>
<p>上一次的值: {previousCount}</p>
<button onClick={() => setCount(count + 1)}>增加</button>
</div>
);
}

TypeScript 支持

所有 Hooks 都提供了完整的 TypeScript 类型定义:

import { useSetState } from '@lynkit/hooks';

interface User {
name: string;
age: number;
skills: string[];
}

function UserProfile() {
// 类型安全的状态管理
const [user, setUser] = useSetState<User>({
name: 'John',
age: 25,
skills: ['React', 'TypeScript']
});

// ...
}