r-util-js/packages/vue3/README.md

93 lines
2.0 KiB
Markdown
Raw Normal View History

2026-05-28 11:30:35 +08:00
# @r-utils/vue3
仅用于 Vue3 项目的工具包,提供 class 处理、组件事件派发和常用组合式 Hooks。
## 适用范围
- 适用于 Vue3 项目。
- 适用于需要复用 Vue3 class 处理、列表加载、表单输入值处理等能力的项目。
## 不适用范围
- 不适用于 Vue2 项目。
- 如果是 uni-app 专用能力,建议优先使用 `@r-utils/uni-app`
## 安装
```bash
pnpm add @r-utils/vue3
```
## 导入方式
### 推荐:根入口导入
大多数场景推荐从根入口导入,路径简单,使用心智负担更低。
```ts
import {
mergeClass,
dispatch,
useLoadMore,
useTimer,
useValueOfRule,
} from "@r-utils/vue3";
```
### 兼容:子路径导入
如果你希望模块边界更清晰,也可以使用子路径导入。两种方式都支持。
```ts
import { mergeClass } from "@r-utils/vue3/vue-helper";
import { useLoadMore } from "@r-utils/vue3/hooks/list";
import { useTimer, useValueOfRule } from "@r-utils/vue3/hooks/utils";
```
## 导出模块
| 子路径 | 说明 |
| --- | --- |
| `@r-utils/vue3/vue-helper` | Vue class 合并、转换和祖先组件事件派发 |
| `@r-utils/vue3/hooks/list` | 列表分页加载 Hook |
| `@r-utils/vue3/hooks/utils` | 常用组合式工具 Hook |
## 使用示例
### 合并 class
```ts
import { mergeClass } from "@r-utils/vue3";
const cls = mergeClass("btn", ["btn-primary"], { active: true });
```
### 列表加载
```ts
import { useLoadMore } from "@r-utils/vue3";
const listState = useLoadMore(async (pageNum, pageSize) => {
return {
total: 100,
list: await fetchList(pageNum, pageSize),
};
});
await listState.loadMore();
```
### 子路径导入 Hook
```ts
import { useTimer } from "@r-utils/vue3/hooks/utils";
const timer = useTimer(60);
timer.start();
```
## 注意事项
- 推荐优先使用根入口导入;如果需要更精确的模块边界,也可以使用子路径导入。
- 本包依赖 Vue3请确保业务项目已安装兼容版本的 `vue`