@faasjs/react 0.0.2-beta.285 → 0.0.2-beta.293
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +79 -60
- package/lib/react/src/index.d.ts +18 -4
- package/package.json +2 -2
package/lib/index.js
CHANGED
|
@@ -111,67 +111,86 @@
|
|
|
111
111
|
|
|
112
112
|
function FaasReactClient({ domain, options, onError }) {
|
|
113
113
|
const client = new FaasBrowserClient(domain, options);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}, [
|
|
155
|
-
action,
|
|
156
|
-
JSON.stringify(params),
|
|
157
|
-
reloadTimes
|
|
158
|
-
]);
|
|
159
|
-
return {
|
|
160
|
-
loading,
|
|
161
|
-
data,
|
|
162
|
-
error,
|
|
163
|
-
promise,
|
|
164
|
-
async reload(params) {
|
|
165
|
-
if (params)
|
|
166
|
-
setParams(params);
|
|
167
|
-
setReloadTimes(reloadTimes + 1);
|
|
168
|
-
return promise;
|
|
169
|
-
},
|
|
170
|
-
setData,
|
|
171
|
-
setLoading,
|
|
172
|
-
setPromise,
|
|
173
|
-
setError,
|
|
114
|
+
// async function faas<Path extends keyof FaasActions> (action: Path, params: FaasActions[Path]['request']): Promise<Response<FaasActions[Path]['response']>>
|
|
115
|
+
async function faas(action, params) {
|
|
116
|
+
if (onError)
|
|
117
|
+
return client.action(action, params)
|
|
118
|
+
.catch(onError(action, params));
|
|
119
|
+
return client.action(action, params);
|
|
120
|
+
}
|
|
121
|
+
function useFaas(action, defaultParams) {
|
|
122
|
+
const [loading, setLoading] = React__default["default"].useState(true);
|
|
123
|
+
const [data, setData] = React__default["default"].useState();
|
|
124
|
+
const [error, setError] = React__default["default"].useState();
|
|
125
|
+
const [promise, setPromise] = React__default["default"].useState();
|
|
126
|
+
const [params, setParams] = React__default["default"].useState(defaultParams);
|
|
127
|
+
const [reloadTimes, setReloadTimes] = React__default["default"].useState(0);
|
|
128
|
+
React__default["default"].useEffect(function () {
|
|
129
|
+
if (JSON.stringify(defaultParams) !== JSON.stringify(params)) {
|
|
130
|
+
setParams(defaultParams);
|
|
131
|
+
}
|
|
132
|
+
}, [JSON.stringify(defaultParams)]);
|
|
133
|
+
React__default["default"].useEffect(function () {
|
|
134
|
+
setLoading(true);
|
|
135
|
+
const request = client.action(action, params);
|
|
136
|
+
setPromise(request);
|
|
137
|
+
request
|
|
138
|
+
.then(r => {
|
|
139
|
+
setData(r === null || r === void 0 ? void 0 : r.data);
|
|
140
|
+
})
|
|
141
|
+
.catch(async (e) => {
|
|
142
|
+
if (onError)
|
|
143
|
+
try {
|
|
144
|
+
setData(await onError(action, params)(e));
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
setError(error);
|
|
148
|
+
}
|
|
149
|
+
setError(e);
|
|
150
|
+
})
|
|
151
|
+
.finally(() => setLoading(false));
|
|
152
|
+
return () => {
|
|
153
|
+
setLoading(false);
|
|
174
154
|
};
|
|
155
|
+
}, [
|
|
156
|
+
action,
|
|
157
|
+
JSON.stringify(params),
|
|
158
|
+
reloadTimes
|
|
159
|
+
]);
|
|
160
|
+
return {
|
|
161
|
+
loading,
|
|
162
|
+
data,
|
|
163
|
+
error,
|
|
164
|
+
promise,
|
|
165
|
+
async reload(params) {
|
|
166
|
+
if (params)
|
|
167
|
+
setParams(params);
|
|
168
|
+
setReloadTimes(reloadTimes + 1);
|
|
169
|
+
return promise;
|
|
170
|
+
},
|
|
171
|
+
setData,
|
|
172
|
+
setLoading,
|
|
173
|
+
setPromise,
|
|
174
|
+
setError,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
faas,
|
|
179
|
+
useFaas,
|
|
180
|
+
FaasData({ action, params, fallback, element, onDataChange }) {
|
|
181
|
+
const request = useFaas(action, params);
|
|
182
|
+
const [loaded, setLoaded] = React__default["default"].useState(false);
|
|
183
|
+
React.useEffect(function () {
|
|
184
|
+
if (!loaded && !request.loading)
|
|
185
|
+
setLoaded(true);
|
|
186
|
+
}, [request.loading]);
|
|
187
|
+
React.useEffect(() => {
|
|
188
|
+
if (onDataChange)
|
|
189
|
+
onDataChange(request);
|
|
190
|
+
}, [JSON.stringify(request.data)]);
|
|
191
|
+
if (loaded)
|
|
192
|
+
return element(request);
|
|
193
|
+
return fallback || null;
|
|
175
194
|
}
|
|
176
195
|
};
|
|
177
196
|
}
|
package/lib/react/src/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { Options, Params, Response, ResponseError } from '../../browser/src';
|
|
2
3
|
export type { FaasBrowserClient, Options, Params, Response, ResponseHeaders, ResponseError } from '../../browser/src';
|
|
3
|
-
|
|
4
|
-
export declare type useFaas = <T = any>(action: string, params: Params) => {
|
|
4
|
+
declare type FaasDataInjection<T = any> = {
|
|
5
5
|
loading: boolean;
|
|
6
6
|
data: T;
|
|
7
7
|
error: any;
|
|
@@ -12,11 +12,25 @@ export declare type useFaas = <T = any>(action: string, params: Params) => {
|
|
|
12
12
|
setPromise(promise: Promise<Response<T>>): void;
|
|
13
13
|
setError(error: any): void;
|
|
14
14
|
};
|
|
15
|
+
declare type FaasDataProps<T = any> = {
|
|
16
|
+
element(args: FaasDataInjection<T>): JSX.Element;
|
|
17
|
+
fallback?: JSX.Element | false;
|
|
18
|
+
action: string;
|
|
19
|
+
params?: Params;
|
|
20
|
+
onDataChange?(args: FaasDataInjection<T>): void;
|
|
21
|
+
};
|
|
22
|
+
export interface FaasActions {
|
|
23
|
+
[path: string]: {
|
|
24
|
+
request: any;
|
|
25
|
+
response: any;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
15
28
|
export declare function FaasReactClient({ domain, options, onError }: {
|
|
16
29
|
domain: string;
|
|
17
30
|
options?: Options;
|
|
18
31
|
onError?: (action: string, params: Params) => (res: ResponseError) => Promise<any>;
|
|
19
32
|
}): {
|
|
20
|
-
faas:
|
|
21
|
-
useFaas:
|
|
33
|
+
faas: <T = any>(action: string, params: Params) => Promise<Response<T>>;
|
|
34
|
+
useFaas: <T_1 = any>(action: string, defaultParams: Params) => FaasDataInjection<T_1>;
|
|
35
|
+
FaasData<T_2 = any>({ action, params, fallback, element, onDataChange }: FaasDataProps<T_2>): JSX.Element;
|
|
22
36
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faasjs/react",
|
|
3
|
-
"version": "0.0.2-beta.
|
|
3
|
+
"version": "0.0.2-beta.293",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/react/src/index.d.ts",
|
|
@@ -27,5 +27,5 @@
|
|
|
27
27
|
"rollup-plugin-typescript2": "*",
|
|
28
28
|
"typescript": "*"
|
|
29
29
|
},
|
|
30
|
-
"gitHead": "
|
|
30
|
+
"gitHead": "e9f3f18f87e199d4d5d2fdee04225b993700018b"
|
|
31
31
|
}
|