Skip to content

Commit 82d5f3e

Browse files
committed
feat(utils-uni): 优化云对象导入与调用逻辑
重构 `importCloudObject` 和 `useCloudMethod` 的类型定义与实现,提取 _ImportObjectOptions 类型以提高代码可读性。合并 options 参数, 支持更灵活的配置传递,并修正参数命名以增强语义清晰度。
1 parent 126a558 commit 82d5f3e

1 file changed

Lines changed: 14 additions & 7 deletions

File tree

packages/utils-uni/src/client.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ import { parseCloudMethodOutput } from './_helpers';
1212

1313
type _ImportObject = UniCloudNamespace.UniCloud['importObject'];
1414
type _ImportObjectArgs = Parameters<_ImportObject>;
15+
type _ImportObjectOptions = _ImportObjectArgs[1];
1516

16-
export type CreateUseCloudObjectOptions = _ImportObjectArgs[1] & {
17+
export type CreateUseCloudObjectOptions = _ImportObjectOptions & {
1718
/**
1819
* 模拟云对象,用于单元测试
1920
* @private
@@ -54,7 +55,7 @@ export type UseCloudMethod = {
5455
<I extends AnyArray, O>(
5556
method: string | ((...inputs: I) => string),
5657
caller: (request: CloudObjectRequest, ...inputs: I) => Promise<CloudMethodOutput<O>>,
57-
options: Omit<UseRequestOptions<I, O>, 'placeholder'> & { placeholder: () => O },
58+
options: Omit<UseRequestOptions<I, O>, 'placeholder'> & _ImportObjectOptions & { placeholder: () => O },
5859
): UseRequestOutputFilled<I, O>;
5960

6061
/**
@@ -67,18 +68,17 @@ export type UseCloudMethod = {
6768
<I extends AnyArray, O>(
6869
method: string | ((...inputs: I) => string),
6970
caller: (request: CloudObjectRequest, ...inputs: I) => Promise<CloudMethodOutput<O>>,
70-
options?: UseRequestOptions<I, O>,
71+
options?: UseRequestOptions<I, O> & _ImportObjectOptions,
7172
): UseRequestOutput<I, O>;
7273
};
7374
/**
7475
* 导入云对象并创建一个用于调用云对象的hook
7576
* @param objectName 云对象名称
76-
* @param options 配置选项,包含模拟服务器、回退错误信息等
77+
* @param importOptions 配置选项,包含模拟服务器、回退错误信息等
7778
* @returns 返回一个可用于调用云对象方法的hook函数
7879
*/
79-
export function importCloudObject(objectName: _ImportObjectArgs[0], options?: CreateUseCloudObjectOptions) {
80-
const server = options?._mockServer || uniCloud.importObject(objectName, options);
81-
const fallbackErrorMessage = options?.fallbackErrorMessage || '请求失败';
80+
export function importCloudObject(objectName: _ImportObjectArgs[0], importOptions?: CreateUseCloudObjectOptions) {
81+
const fallbackErrorMessage = importOptions?.fallbackErrorMessage || '请求失败';
8282

8383
/**
8484
* 用于调用云对象方法的hook函数
@@ -90,6 +90,13 @@ export function importCloudObject(objectName: _ImportObjectArgs[0], options?: Cr
9090
* @returns 返回一个请求hook,用于处理云对象调用
9191
*/
9292
const useCloudMethod: UseCloudMethod = (method, caller, options) => {
93+
const server =
94+
importOptions?._mockServer ||
95+
uniCloud.importObject(objectName, {
96+
...importOptions,
97+
...options,
98+
});
99+
93100
// 使用请求hook处理云对象调用
94101
return useRequest(async (...inputs) => {
95102
const methodName = isFunction(method) ? method(...inputs) : method;

0 commit comments

Comments
 (0)