@@ -47,33 +47,27 @@ const AjaxUploader: React.FC<Readonly<React.PropsWithChildren<UploadProps>>> = p
47
47
} = props ;
48
48
49
49
const [ uid , setUid ] = React . useState < string > ( getUid ) ;
50
- const [ reqs , setReqs ] = React . useState < Record < PropertyKey , any > > ( { } ) ;
51
50
52
51
const isMountedRef = React . useRef < boolean > ( false ) ;
53
52
const inputRef = React . useRef < HTMLInputElement > ( null ) ;
53
+ const reqsRef = React . useRef < Partial < Record < PropertyKey , any > > > ( { } ) ;
54
54
55
- const abort = React . useCallback (
56
- ( file ?: any ) => {
57
- if ( file ) {
58
- const internalUid = file . uid ? file . uid : file ;
59
- if ( reqs [ internalUid ] ?. abort ) {
60
- reqs [ internalUid ] . abort ( ) ;
61
- }
62
- setReqs ( prev => {
63
- const { [ internalUid ] : _ , ...rest } = prev ;
64
- return rest ;
65
- } ) ;
66
- } else {
67
- Object . keys ( reqs ) . forEach ( key => {
68
- if ( reqs [ key ] ?. abort ) {
69
- reqs [ key ] . abort ( ) ;
70
- }
71
- } ) ;
72
- setReqs ( { } ) ;
55
+ const abort = React . useCallback ( ( file ?: any ) => {
56
+ if ( file ) {
57
+ const internalUid = file . uid ? file . uid : file ;
58
+ if ( reqsRef . current [ internalUid ] ?. abort ) {
59
+ reqsRef . current [ internalUid ] . abort ( ) ;
73
60
}
74
- } ,
75
- [ reqs ] ,
76
- ) ;
61
+ reqsRef . current [ internalUid ] = undefined ;
62
+ } else {
63
+ Object . keys ( reqsRef . current ) . forEach ( key => {
64
+ if ( reqsRef . current [ key ] ?. abort ) {
65
+ reqsRef . current [ key ] . abort ( ) ;
66
+ }
67
+ } ) ;
68
+ reqsRef . current = { } ;
69
+ }
70
+ } , [ ] ) ;
77
71
78
72
React . useEffect ( ( ) => {
79
73
isMountedRef . current = true ;
@@ -172,21 +166,15 @@ const AjaxUploader: React.FC<Readonly<React.PropsWithChildren<UploadProps>>> = p
172
166
} ,
173
167
onSuccess : ( ret : any , xhr : XMLHttpRequest ) => {
174
168
props . onSuccess ?.( ret , parsedFile , xhr ) ;
175
- setReqs ( prev => {
176
- const { [ origin . uid ] : _ , ...rest } = prev ;
177
- return rest ;
178
- } ) ;
169
+ reqsRef . current [ origin . uid ] = undefined ;
179
170
} ,
180
171
onError : ( err : UploadRequestError , ret : any ) => {
181
172
props . onError ?.( err , ret , parsedFile ) ;
182
- setReqs ( prev => {
183
- const { [ origin . uid ] : _ , ...rest } = prev ;
184
- return rest ;
185
- } ) ;
173
+ reqsRef . current [ origin . uid ] = undefined ;
186
174
} ,
187
175
} ;
188
176
onStart ( origin ) ;
189
- setReqs ( prev => ( { ... prev , [ origin . uid ] : request ( requestOption ) } ) ) ;
177
+ reqsRef . current [ origin . uid ] = request ( requestOption ) ;
190
178
} ;
191
179
192
180
const uploadFiles = ( files : File [ ] ) => {
0 commit comments