@faasjs/react 0.0.3-beta.8 → 0.0.3-beta.81
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/README.md +22 -83
- package/dist/index.d.ts +15 -9
- package/dist/index.js +39 -17
- package/dist/index.mjs +40 -18
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ React plugin for FaasJS.
|
|
|
10
10
|
|
|
11
11
|
## Install
|
|
12
12
|
|
|
13
|
-
npm install @faasjs/react
|
|
13
|
+
npm install @faasjs/react react react-dom
|
|
14
14
|
|
|
15
15
|
## Modules
|
|
16
16
|
|
|
@@ -20,14 +20,17 @@ React plugin for FaasJS.
|
|
|
20
20
|
- [Response](classes/Response.md)
|
|
21
21
|
- [ResponseError](classes/ResponseError.md)
|
|
22
22
|
|
|
23
|
+
### Interfaces
|
|
24
|
+
|
|
25
|
+
- [FaasDataInjection](interfaces/FaasDataInjection.md)
|
|
26
|
+
- [FaasDataWrapperProps](interfaces/FaasDataWrapperProps.md)
|
|
27
|
+
- [FaasReactClientInstance](interfaces/FaasReactClientInstance.md)
|
|
28
|
+
|
|
23
29
|
### Type Aliases
|
|
24
30
|
|
|
25
31
|
- [FaasAction](#faasaction)
|
|
26
32
|
- [FaasData](#faasdata)
|
|
27
|
-
- [FaasDataInjection](#faasdatainjection)
|
|
28
|
-
- [FaasDataWrapperProps](#faasdatawrapperprops)
|
|
29
33
|
- [FaasParams](#faasparams)
|
|
30
|
-
- [FaasReactClientInstance](#faasreactclientinstance)
|
|
31
34
|
- [Options](#options)
|
|
32
35
|
- [ResponseHeaders](#responseheaders)
|
|
33
36
|
|
|
@@ -59,60 +62,6 @@ ___
|
|
|
59
62
|
|
|
60
63
|
___
|
|
61
64
|
|
|
62
|
-
### FaasDataInjection
|
|
63
|
-
|
|
64
|
-
Ƭ **FaasDataInjection**<`Data`\>: `Object`
|
|
65
|
-
|
|
66
|
-
Injects FaasData props.
|
|
67
|
-
|
|
68
|
-
#### Type parameters
|
|
69
|
-
|
|
70
|
-
| Name | Type |
|
|
71
|
-
| :------ | :------ |
|
|
72
|
-
| `Data` | `any` |
|
|
73
|
-
|
|
74
|
-
#### Type declaration
|
|
75
|
-
|
|
76
|
-
| Name | Type |
|
|
77
|
-
| :------ | :------ |
|
|
78
|
-
| `action` | `string` \| `any` |
|
|
79
|
-
| `data` | `Data` |
|
|
80
|
-
| `error` | `any` |
|
|
81
|
-
| `loading` | `boolean` |
|
|
82
|
-
| `params` | `Record`<`string`, `any`\> |
|
|
83
|
-
| `promise` | `Promise`<[`Response`](classes/Response.md)<`Data`\>\> |
|
|
84
|
-
| `setData` | `React.Dispatch`<`React.SetStateAction`<`Data`\>\> |
|
|
85
|
-
| `setError` | `React.Dispatch`<`React.SetStateAction`<`any`\>\> |
|
|
86
|
-
| `setLoading` | `React.Dispatch`<`React.SetStateAction`<`boolean`\>\> |
|
|
87
|
-
| `setPromise` | `React.Dispatch`<`React.SetStateAction`<`Promise`<[`Response`](classes/Response.md)<`Data`\>\>\>\> |
|
|
88
|
-
| `reload` | (`params?`: `Record`<`string`, `any`\>) => `Promise`<[`Response`](classes/Response.md)<`Data`\>\> |
|
|
89
|
-
|
|
90
|
-
___
|
|
91
|
-
|
|
92
|
-
### FaasDataWrapperProps
|
|
93
|
-
|
|
94
|
-
Ƭ **FaasDataWrapperProps**<`PathOrData`\>: `Object`
|
|
95
|
-
|
|
96
|
-
#### Type parameters
|
|
97
|
-
|
|
98
|
-
| Name | Type |
|
|
99
|
-
| :------ | :------ |
|
|
100
|
-
| `PathOrData` | extends [`FaasAction`](#faasaction) |
|
|
101
|
-
|
|
102
|
-
#### Type declaration
|
|
103
|
-
|
|
104
|
-
| Name | Type | Description |
|
|
105
|
-
| :------ | :------ | :------ |
|
|
106
|
-
| `action` | `string` | - |
|
|
107
|
-
| `data?` | [`FaasData`](#faasdata)<`PathOrData`\> | use custom data, should work with setData |
|
|
108
|
-
| `fallback?` | `JSX.Element` \| ``false`` | - |
|
|
109
|
-
| `params?` | [`FaasParams`](#faasparams)<`PathOrData`\> | - |
|
|
110
|
-
| `setData?` | `React.Dispatch`<`React.SetStateAction`<[`FaasData`](#faasdata)<`PathOrData`\>\>\> | use custom setData, should work with data |
|
|
111
|
-
| `onDataChange?` | (`args`: [`FaasDataInjection`](#faasdatainjection)<[`FaasData`](#faasdata)<`PathOrData`\>\>) => `void` | - |
|
|
112
|
-
| `render?` | (`args`: [`FaasDataInjection`](#faasdatainjection)<[`FaasData`](#faasdata)<`PathOrData`\>\>) => `Element` \| `Element`[] | - |
|
|
113
|
-
|
|
114
|
-
___
|
|
115
|
-
|
|
116
65
|
### FaasParams
|
|
117
66
|
|
|
118
67
|
Ƭ **FaasParams**<`T`\>: `T` extends `FaasActionPaths` ? `FaasActions`[`T`][``"Params"``] : `any`
|
|
@@ -125,20 +74,6 @@ ___
|
|
|
125
74
|
|
|
126
75
|
___
|
|
127
76
|
|
|
128
|
-
### FaasReactClientInstance
|
|
129
|
-
|
|
130
|
-
Ƭ **FaasReactClientInstance**: `Object`
|
|
131
|
-
|
|
132
|
-
#### Type declaration
|
|
133
|
-
|
|
134
|
-
| Name | Type |
|
|
135
|
-
| :------ | :------ |
|
|
136
|
-
| `faas` | <PathOrData\>(`action`: `string` \| `PathOrData`, `params`: [`FaasParams`](#faasparams)<`PathOrData`\>) => `Promise`<[`Response`](classes/Response.md)<[`FaasData`](#faasdata)<`PathOrData`\>\>\> |
|
|
137
|
-
| `useFaas` | <PathOrData\>(`action`: `string` \| `PathOrData`, `defaultParams`: [`FaasParams`](#faasparams)<`PathOrData`\>) => [`FaasDataInjection`](#faasdatainjection)<[`FaasData`](#faasdata)<`PathOrData`\>\> |
|
|
138
|
-
| `FaasDataWrapper` | <PathOrData\>(`props`: [`FaasDataWrapperProps`](#faasdatawrapperprops)<`PathOrData`\>) => `Element` |
|
|
139
|
-
|
|
140
|
-
___
|
|
141
|
-
|
|
142
77
|
### Options
|
|
143
78
|
|
|
144
79
|
Ƭ **Options**: `RequestInit` & { `beforeRequest?`: (`{
|
|
@@ -173,7 +108,7 @@ A data wrapper for react components
|
|
|
173
108
|
|
|
174
109
|
| Name | Type |
|
|
175
110
|
| :------ | :------ |
|
|
176
|
-
| `props` | [`FaasDataWrapperProps`](
|
|
111
|
+
| `props` | [`FaasDataWrapperProps`](interfaces/FaasDataWrapperProps.md)<`PathOrData`\> |
|
|
177
112
|
|
|
178
113
|
#### Returns
|
|
179
114
|
|
|
@@ -194,7 +129,7 @@ ___
|
|
|
194
129
|
|
|
195
130
|
### FaasReactClient
|
|
196
131
|
|
|
197
|
-
▸ **FaasReactClient**(
|
|
132
|
+
▸ **FaasReactClient**(`«destructured»`): [`FaasReactClientInstance`](interfaces/FaasReactClientInstance.md)
|
|
198
133
|
|
|
199
134
|
Before use faas, you should initialize a FaasReactClient.
|
|
200
135
|
|
|
@@ -202,14 +137,14 @@ Before use faas, you should initialize a FaasReactClient.
|
|
|
202
137
|
|
|
203
138
|
| Name | Type |
|
|
204
139
|
| :------ | :------ |
|
|
205
|
-
|
|
|
206
|
-
| `
|
|
207
|
-
| `
|
|
208
|
-
| `
|
|
140
|
+
| `«destructured»` | `Object` |
|
|
141
|
+
| › `domain` | `string` |
|
|
142
|
+
| › `onError?` | (`action`: `string`, `params`: `Record`<`string`, `any`\>) => (`res`: [`ResponseError`](classes/ResponseError.md)) => `Promise`<`void`\> |
|
|
143
|
+
| › `options?` | [`Options`](#options) |
|
|
209
144
|
|
|
210
145
|
#### Returns
|
|
211
146
|
|
|
212
|
-
[`FaasReactClientInstance`](
|
|
147
|
+
[`FaasReactClientInstance`](interfaces/FaasReactClientInstance.md)
|
|
213
148
|
|
|
214
149
|
```ts
|
|
215
150
|
const client = FaasReactClient({
|
|
@@ -252,7 +187,7 @@ ___
|
|
|
252
187
|
|
|
253
188
|
### getClient
|
|
254
189
|
|
|
255
|
-
▸ **getClient**(`domain?`): [`FaasReactClientInstance`](
|
|
190
|
+
▸ **getClient**(`domain?`): [`FaasReactClientInstance`](interfaces/FaasReactClientInstance.md)
|
|
256
191
|
|
|
257
192
|
Get FaasReactClient instance
|
|
258
193
|
|
|
@@ -264,7 +199,7 @@ Get FaasReactClient instance
|
|
|
264
199
|
|
|
265
200
|
#### Returns
|
|
266
201
|
|
|
267
|
-
[`FaasReactClientInstance`](
|
|
202
|
+
[`FaasReactClientInstance`](interfaces/FaasReactClientInstance.md)
|
|
268
203
|
|
|
269
204
|
```ts
|
|
270
205
|
getClient()
|
|
@@ -276,7 +211,7 @@ ___
|
|
|
276
211
|
|
|
277
212
|
### useFaas
|
|
278
213
|
|
|
279
|
-
▸ **useFaas**<`PathOrData`\>(`action`, `defaultParams`): [`FaasDataInjection`](
|
|
214
|
+
▸ **useFaas**<`PathOrData`\>(`action`, `defaultParams`, `options?`): [`FaasDataInjection`](interfaces/FaasDataInjection.md)<[`FaasData`](#faasdata)<`PathOrData`\>\>
|
|
280
215
|
|
|
281
216
|
Request faas server with React hook
|
|
282
217
|
|
|
@@ -292,10 +227,14 @@ Request faas server with React hook
|
|
|
292
227
|
| :------ | :------ | :------ |
|
|
293
228
|
| `action` | `string` \| `PathOrData` | {string} action name |
|
|
294
229
|
| `defaultParams` | [`FaasParams`](#faasparams)<`PathOrData`\> | {object} initial action params |
|
|
230
|
+
| `options?` | `Object` | - |
|
|
231
|
+
| `options.data?` | [`FaasData`](#faasdata)<`PathOrData`\> | - |
|
|
232
|
+
| `options.setData?` | `Dispatch`<`SetStateAction`<[`FaasData`](#faasdata)<`PathOrData`\>\>\> | - |
|
|
233
|
+
| `options.skip?` | `boolean` | - |
|
|
295
234
|
|
|
296
235
|
#### Returns
|
|
297
236
|
|
|
298
|
-
[`FaasDataInjection`](
|
|
237
|
+
[`FaasDataInjection`](interfaces/FaasDataInjection.md)<[`FaasData`](#faasdata)<`PathOrData`\>\>
|
|
299
238
|
|
|
300
239
|
```ts
|
|
301
240
|
function Post ({ id }) {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { Response, Options, ResponseError } from '@faasjs/browser';
|
|
2
2
|
export { FaasBrowserClient, Options, Response, ResponseError, ResponseHeaders } from '@faasjs/browser';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
|
|
4
|
+
interface FaasActions {
|
|
5
|
+
}
|
|
6
|
+
type FaasActionPaths = keyof FaasActions;
|
|
7
|
+
type FaasAction = FaasActionPaths | Record<string, any>;
|
|
8
|
+
type FaasParams<T = any> = T extends FaasActionPaths ? FaasActions[T]['Params'] : any;
|
|
9
|
+
type FaasData<T = any> = T extends FaasActionPaths ? FaasActions[T]['Data'] : T;
|
|
5
10
|
|
|
6
11
|
/**
|
|
7
12
|
* Injects FaasData props.
|
|
8
13
|
*/
|
|
9
|
-
|
|
14
|
+
interface FaasDataInjection<Data = any> {
|
|
10
15
|
action: string | any;
|
|
11
16
|
params: Record<string, any>;
|
|
12
17
|
loading: boolean;
|
|
@@ -18,9 +23,10 @@ type FaasDataInjection<Data = any> = {
|
|
|
18
23
|
setLoading: React.Dispatch<React.SetStateAction<boolean>>;
|
|
19
24
|
setPromise: React.Dispatch<React.SetStateAction<Promise<Response<Data>>>>;
|
|
20
25
|
setError: React.Dispatch<React.SetStateAction<any>>;
|
|
21
|
-
}
|
|
22
|
-
|
|
26
|
+
}
|
|
27
|
+
interface FaasDataWrapperProps<PathOrData extends FaasAction> {
|
|
23
28
|
render?(args: FaasDataInjection<FaasData<PathOrData>>): JSX.Element | JSX.Element[];
|
|
29
|
+
children?: React.ReactElement<Partial<FaasDataInjection>>;
|
|
24
30
|
fallback?: JSX.Element | false;
|
|
25
31
|
action: string;
|
|
26
32
|
params?: FaasParams<PathOrData>;
|
|
@@ -29,8 +35,8 @@ type FaasDataWrapperProps<PathOrData extends FaasAction> = {
|
|
|
29
35
|
data?: FaasData<PathOrData>;
|
|
30
36
|
/** use custom setData, should work with data */
|
|
31
37
|
setData?: React.Dispatch<React.SetStateAction<FaasData<PathOrData>>>;
|
|
32
|
-
}
|
|
33
|
-
|
|
38
|
+
}
|
|
39
|
+
interface FaasReactClientInstance {
|
|
34
40
|
faas: <PathOrData extends FaasAction>(action: string | PathOrData, params: FaasParams<PathOrData>) => Promise<Response<FaasData<PathOrData>>>;
|
|
35
41
|
useFaas: <PathOrData extends FaasAction>(action: string | PathOrData, defaultParams: FaasParams<PathOrData>, options?: {
|
|
36
42
|
data?: FaasData<PathOrData>;
|
|
@@ -38,7 +44,7 @@ type FaasReactClientInstance = {
|
|
|
38
44
|
skip?: boolean;
|
|
39
45
|
}) => FaasDataInjection<FaasData<PathOrData>>;
|
|
40
46
|
FaasDataWrapper<PathOrData extends FaasAction>(props: FaasDataWrapperProps<PathOrData>): JSX.Element;
|
|
41
|
-
}
|
|
47
|
+
}
|
|
42
48
|
/**
|
|
43
49
|
* Before use faas, you should initialize a FaasReactClient.
|
|
44
50
|
*
|
|
@@ -118,4 +124,4 @@ declare function useFaas<PathOrData extends FaasAction>(action: string | PathOrD
|
|
|
118
124
|
*/
|
|
119
125
|
declare function FaasDataWrapper<PathOrData extends FaasAction>(props: FaasDataWrapperProps<PathOrData>): JSX.Element;
|
|
120
126
|
|
|
121
|
-
export { FaasDataInjection, FaasDataWrapper, FaasDataWrapperProps, FaasReactClient, FaasReactClientInstance, faas, getClient, useFaas };
|
|
127
|
+
export { FaasAction, FaasData, FaasDataInjection, FaasDataWrapper, FaasDataWrapperProps, FaasParams, FaasReactClient, FaasReactClientInstance, faas, getClient, useFaas };
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.tsx
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
|
+
FaasBrowserClient: () => import_browser.FaasBrowserClient,
|
|
23
24
|
FaasDataWrapper: () => FaasDataWrapper,
|
|
24
25
|
FaasReactClient: () => FaasReactClient,
|
|
25
26
|
faas: () => faas,
|
|
@@ -53,34 +54,49 @@ function FaasReactClient({
|
|
|
53
54
|
const [promise, setPromise] = (0, import_react.useState)();
|
|
54
55
|
const [params, setParams] = (0, import_react.useState)(defaultParams);
|
|
55
56
|
const [reloadTimes, setReloadTimes] = (0, import_react.useState)(0);
|
|
57
|
+
const [fails, setFails] = (0, import_react.useState)(0);
|
|
56
58
|
(0, import_react.useEffect)(function() {
|
|
57
59
|
if (JSON.stringify(defaultParams) !== JSON.stringify(params)) {
|
|
58
60
|
setParams(defaultParams);
|
|
59
61
|
}
|
|
60
62
|
}, [JSON.stringify(defaultParams)]);
|
|
61
63
|
(0, import_react.useEffect)(function() {
|
|
62
|
-
if (options2 == null ? void 0 : options2.skip) {
|
|
64
|
+
if (!action || (options2 == null ? void 0 : options2.skip)) {
|
|
63
65
|
setLoading(false);
|
|
64
66
|
return;
|
|
65
67
|
}
|
|
66
68
|
setLoading(true);
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
const controller = new AbortController();
|
|
70
|
+
function send() {
|
|
71
|
+
const request = client.action(action, options2.params || params, { signal: controller.signal });
|
|
72
|
+
setPromise(request);
|
|
73
|
+
request.then((r) => (options2 == null ? void 0 : options2.setData) ? options2.setData(r.data) : setData(r.data)).catch(async (e) => {
|
|
74
|
+
if ((e == null ? void 0 : e.message) === "The user aborted a request.")
|
|
75
|
+
return;
|
|
76
|
+
if (!fails && typeof (e == null ? void 0 : e.message) === "string" && e.message.indexOf("Failed to fetch") >= 0) {
|
|
77
|
+
console.warn(`FaasReactClient: ${e.message} retry...`);
|
|
78
|
+
setFails(1);
|
|
79
|
+
return send();
|
|
75
80
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
+
if (onError)
|
|
82
|
+
try {
|
|
83
|
+
await onError(action, params)(e);
|
|
84
|
+
} catch (error2) {
|
|
85
|
+
setError(error2);
|
|
86
|
+
}
|
|
87
|
+
else
|
|
88
|
+
setError(e);
|
|
89
|
+
return Promise.reject(e);
|
|
90
|
+
}).finally(() => setLoading(false));
|
|
91
|
+
}
|
|
92
|
+
send();
|
|
93
|
+
return () => {
|
|
94
|
+
controller.abort();
|
|
95
|
+
setLoading(false);
|
|
96
|
+
};
|
|
81
97
|
}, [
|
|
82
98
|
action,
|
|
83
|
-
JSON.stringify(params),
|
|
99
|
+
JSON.stringify(options2.params || params),
|
|
84
100
|
reloadTimes,
|
|
85
101
|
options2.skip
|
|
86
102
|
]);
|
|
@@ -111,6 +127,7 @@ function FaasReactClient({
|
|
|
111
127
|
params,
|
|
112
128
|
fallback,
|
|
113
129
|
render,
|
|
130
|
+
children,
|
|
114
131
|
onDataChange,
|
|
115
132
|
data,
|
|
116
133
|
setData
|
|
@@ -128,8 +145,12 @@ function FaasReactClient({
|
|
|
128
145
|
if (onDataChange)
|
|
129
146
|
onDataChange(request);
|
|
130
147
|
}, [JSON.stringify(request.data)]);
|
|
131
|
-
if (loaded)
|
|
132
|
-
|
|
148
|
+
if (loaded) {
|
|
149
|
+
if (children)
|
|
150
|
+
return (0, import_react.cloneElement)(children, request);
|
|
151
|
+
if (render)
|
|
152
|
+
return render(request);
|
|
153
|
+
}
|
|
133
154
|
return fallback || null;
|
|
134
155
|
}
|
|
135
156
|
};
|
|
@@ -161,6 +182,7 @@ function FaasDataWrapper(props) {
|
|
|
161
182
|
}
|
|
162
183
|
// Annotate the CommonJS export names for ESM import in node:
|
|
163
184
|
0 && (module.exports = {
|
|
185
|
+
FaasBrowserClient,
|
|
164
186
|
FaasDataWrapper,
|
|
165
187
|
FaasReactClient,
|
|
166
188
|
faas,
|
package/dist/index.mjs
CHANGED
|
@@ -5,7 +5,8 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
useState,
|
|
7
7
|
useEffect,
|
|
8
|
-
createElement
|
|
8
|
+
createElement,
|
|
9
|
+
cloneElement
|
|
9
10
|
} from "react";
|
|
10
11
|
var clients = {};
|
|
11
12
|
function FaasReactClient({
|
|
@@ -31,34 +32,49 @@ function FaasReactClient({
|
|
|
31
32
|
const [promise, setPromise] = useState();
|
|
32
33
|
const [params, setParams] = useState(defaultParams);
|
|
33
34
|
const [reloadTimes, setReloadTimes] = useState(0);
|
|
35
|
+
const [fails, setFails] = useState(0);
|
|
34
36
|
useEffect(function() {
|
|
35
37
|
if (JSON.stringify(defaultParams) !== JSON.stringify(params)) {
|
|
36
38
|
setParams(defaultParams);
|
|
37
39
|
}
|
|
38
40
|
}, [JSON.stringify(defaultParams)]);
|
|
39
41
|
useEffect(function() {
|
|
40
|
-
if (options2 == null ? void 0 : options2.skip) {
|
|
42
|
+
if (!action || (options2 == null ? void 0 : options2.skip)) {
|
|
41
43
|
setLoading(false);
|
|
42
44
|
return;
|
|
43
45
|
}
|
|
44
46
|
setLoading(true);
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
const controller = new AbortController();
|
|
48
|
+
function send() {
|
|
49
|
+
const request = client.action(action, options2.params || params, { signal: controller.signal });
|
|
50
|
+
setPromise(request);
|
|
51
|
+
request.then((r) => (options2 == null ? void 0 : options2.setData) ? options2.setData(r.data) : setData(r.data)).catch(async (e) => {
|
|
52
|
+
if ((e == null ? void 0 : e.message) === "The user aborted a request.")
|
|
53
|
+
return;
|
|
54
|
+
if (!fails && typeof (e == null ? void 0 : e.message) === "string" && e.message.indexOf("Failed to fetch") >= 0) {
|
|
55
|
+
console.warn(`FaasReactClient: ${e.message} retry...`);
|
|
56
|
+
setFails(1);
|
|
57
|
+
return send();
|
|
53
58
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
if (onError)
|
|
60
|
+
try {
|
|
61
|
+
await onError(action, params)(e);
|
|
62
|
+
} catch (error2) {
|
|
63
|
+
setError(error2);
|
|
64
|
+
}
|
|
65
|
+
else
|
|
66
|
+
setError(e);
|
|
67
|
+
return Promise.reject(e);
|
|
68
|
+
}).finally(() => setLoading(false));
|
|
69
|
+
}
|
|
70
|
+
send();
|
|
71
|
+
return () => {
|
|
72
|
+
controller.abort();
|
|
73
|
+
setLoading(false);
|
|
74
|
+
};
|
|
59
75
|
}, [
|
|
60
76
|
action,
|
|
61
|
-
JSON.stringify(params),
|
|
77
|
+
JSON.stringify(options2.params || params),
|
|
62
78
|
reloadTimes,
|
|
63
79
|
options2.skip
|
|
64
80
|
]);
|
|
@@ -89,6 +105,7 @@ function FaasReactClient({
|
|
|
89
105
|
params,
|
|
90
106
|
fallback,
|
|
91
107
|
render,
|
|
108
|
+
children,
|
|
92
109
|
onDataChange,
|
|
93
110
|
data,
|
|
94
111
|
setData
|
|
@@ -106,8 +123,12 @@ function FaasReactClient({
|
|
|
106
123
|
if (onDataChange)
|
|
107
124
|
onDataChange(request);
|
|
108
125
|
}, [JSON.stringify(request.data)]);
|
|
109
|
-
if (loaded)
|
|
110
|
-
|
|
126
|
+
if (loaded) {
|
|
127
|
+
if (children)
|
|
128
|
+
return cloneElement(children, request);
|
|
129
|
+
if (render)
|
|
130
|
+
return render(request);
|
|
131
|
+
}
|
|
111
132
|
return fallback || null;
|
|
112
133
|
}
|
|
113
134
|
};
|
|
@@ -138,6 +159,7 @@ function FaasDataWrapper(props) {
|
|
|
138
159
|
return createElement(client.FaasDataWrapper, props);
|
|
139
160
|
}
|
|
140
161
|
export {
|
|
162
|
+
FaasBrowserClient,
|
|
141
163
|
FaasDataWrapper,
|
|
142
164
|
FaasReactClient,
|
|
143
165
|
faas,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faasjs/react",
|
|
3
|
-
"version": "0.0.3-beta.
|
|
3
|
+
"version": "0.0.3-beta.81",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -16,15 +16,15 @@
|
|
|
16
16
|
},
|
|
17
17
|
"funding": "https://github.com/sponsors/faasjs",
|
|
18
18
|
"scripts": {
|
|
19
|
-
"build": "tsup src/index.tsx --format esm,cjs"
|
|
20
|
-
"build:types": "tsup-node src/index.tsx --dts-only"
|
|
19
|
+
"build": "tsup src/index.tsx --format esm,cjs --dts --clean"
|
|
21
20
|
},
|
|
22
21
|
"files": [
|
|
23
22
|
"dist"
|
|
24
23
|
],
|
|
25
24
|
"dependencies": {
|
|
26
|
-
"@faasjs/browser": "^0.0.3-beta.
|
|
27
|
-
|
|
25
|
+
"@faasjs/browser": "^0.0.3-beta.81"
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
28
|
"react": "*"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|