1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 | import {
|
23 | ClassAttributes,
|
24 | Component,
|
25 | ComponentClass,
|
26 | ComponentType,
|
27 | StatelessComponent,
|
28 | Context,
|
29 | NamedExoticComponent
|
30 | } from 'react';
|
31 |
|
32 | import {
|
33 | Action,
|
34 | ActionCreator,
|
35 | AnyAction,
|
36 | Dispatch,
|
37 | Store
|
38 | } from 'redux';
|
39 |
|
40 | import hoistNonReactStatics = require('hoist-non-react-statics');
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 | export interface DefaultRootState {}
|
50 |
|
51 | export type AnyIfEmpty<T extends object> = keyof T extends never ? any : T;
|
52 | export type RootStateOrAny = AnyIfEmpty<DefaultRootState>;
|
53 |
|
54 |
|
55 | export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
|
56 |
|
57 | export interface DispatchProp<A extends Action = AnyAction> {
|
58 | dispatch: Dispatch<A>;
|
59 | }
|
60 |
|
61 | export type AdvancedComponentDecorator<TProps, TOwnProps> =
|
62 | (component: ComponentType<TProps>) => NamedExoticComponent<TOwnProps>;
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 |
|
71 |
|
72 |
|
73 |
|
74 |
|
75 |
|
76 | export type Matching<InjectedProps, DecorationTargetProps> = {
|
77 | [P in keyof DecorationTargetProps]: P extends keyof InjectedProps
|
78 | ? InjectedProps[P] extends DecorationTargetProps[P]
|
79 | ? DecorationTargetProps[P]
|
80 | : InjectedProps[P]
|
81 | : DecorationTargetProps[P];
|
82 | };
|
83 |
|
84 |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 |
|
90 |
|
91 |
|
92 |
|
93 |
|
94 | export type Shared<
|
95 | InjectedProps,
|
96 | DecorationTargetProps
|
97 | > = {
|
98 | [P in Extract<keyof InjectedProps, keyof DecorationTargetProps>]?: InjectedProps[P] extends DecorationTargetProps[P] ? DecorationTargetProps[P] : never;
|
99 | };
|
100 |
|
101 |
|
102 | export type GetProps<C> = C extends ComponentType<infer P>
|
103 | ? C extends ComponentClass<P> ? ClassAttributes<InstanceType<C>> & P : P
|
104 | : never;
|
105 |
|
106 |
|
107 |
|
108 | export type ConnectedComponent<
|
109 | C extends ComponentType<any>,
|
110 | P
|
111 | > = NamedExoticComponent<JSX.LibraryManagedAttributes<C, P>> & hoistNonReactStatics.NonReactStatics<C> & {
|
112 | WrappedComponent: C;
|
113 | };
|
114 |
|
115 |
|
116 |
|
117 |
|
118 | export type InferableComponentEnhancerWithProps<TInjectedProps, TNeedsProps> =
|
119 | <C extends ComponentType<Matching<TInjectedProps, GetProps<C>>>>(
|
120 | component: C
|
121 | ) => ConnectedComponent<C, Omit<GetProps<C>, keyof Shared<TInjectedProps, GetProps<C>>> & TNeedsProps>;
|
122 |
|
123 |
|
124 |
|
125 |
|
126 | export type InferableComponentEnhancer<TInjectedProps> =
|
127 | InferableComponentEnhancerWithProps<TInjectedProps, {}>;
|
128 |
|
129 | export type InferThunkActionCreatorType<TActionCreator extends (...args: any[]) => any> =
|
130 | TActionCreator extends (...args: infer TParams) => (...args: any[]) => infer TReturn
|
131 | ? (...args: TParams) => TReturn
|
132 | : TActionCreator;
|
133 |
|
134 | export type HandleThunkActionCreator<TActionCreator> =
|
135 | TActionCreator extends (...args: any[]) => any
|
136 | ? InferThunkActionCreatorType<TActionCreator>
|
137 | : TActionCreator;
|
138 |
|
139 |
|
140 |
|
141 | export type ResolveThunks<TDispatchProps> =
|
142 | TDispatchProps extends { [key: string]: any }
|
143 | ? {
|
144 | [C in keyof TDispatchProps]: HandleThunkActionCreator<TDispatchProps[C]>
|
145 | }
|
146 | : TDispatchProps;
|
147 |
|
148 |
|
149 |
|
150 | export type ResolveArrayThunks<TDispatchProps extends ReadonlyArray<any>> =
|
151 | TDispatchProps extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6, infer A7, infer A8, infer A9]
|
152 | ? [HandleThunkActionCreator<A1>, HandleThunkActionCreator<A2>, HandleThunkActionCreator<A3>, HandleThunkActionCreator<A4>,
|
153 | HandleThunkActionCreator<A5>, HandleThunkActionCreator<A6>, HandleThunkActionCreator<A7>, HandleThunkActionCreator<A8>, HandleThunkActionCreator<A9>]
|
154 | : TDispatchProps extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6, infer A7, infer A8]
|
155 | ? [HandleThunkActionCreator<A1>, HandleThunkActionCreator<A2>, HandleThunkActionCreator<A3>, HandleThunkActionCreator<A4>,
|
156 | HandleThunkActionCreator<A5>, HandleThunkActionCreator<A6>, HandleThunkActionCreator<A7>, HandleThunkActionCreator<A8>]
|
157 | : TDispatchProps extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6, infer A7]
|
158 | ? [HandleThunkActionCreator<A1>, HandleThunkActionCreator<A2>, HandleThunkActionCreator<A3>, HandleThunkActionCreator<A4>,
|
159 | HandleThunkActionCreator<A5>, HandleThunkActionCreator<A6>, HandleThunkActionCreator<A7>]
|
160 | : TDispatchProps extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6]
|
161 | ? [HandleThunkActionCreator<A1>, HandleThunkActionCreator<A2>, HandleThunkActionCreator<A3>, HandleThunkActionCreator<A4>, HandleThunkActionCreator<A5>, HandleThunkActionCreator<A6>]
|
162 | : TDispatchProps extends [infer A1, infer A2, infer A3, infer A4, infer A5]
|
163 | ? [HandleThunkActionCreator<A1>, HandleThunkActionCreator<A2>, HandleThunkActionCreator<A3>, HandleThunkActionCreator<A4>, HandleThunkActionCreator<A5>]
|
164 | : TDispatchProps extends [infer A1, infer A2, infer A3, infer A4] ? [HandleThunkActionCreator<A1>, HandleThunkActionCreator<A2>, HandleThunkActionCreator<A3>, HandleThunkActionCreator<A4>]
|
165 | : TDispatchProps extends [infer A1, infer A2, infer A3] ? [HandleThunkActionCreator<A1>, HandleThunkActionCreator<A2>, HandleThunkActionCreator<A3>]
|
166 | : TDispatchProps extends [infer A1, infer A2] ? [HandleThunkActionCreator<A1>, HandleThunkActionCreator<A2>]
|
167 | : TDispatchProps extends [infer A1] ? [HandleThunkActionCreator<A1>]
|
168 | : TDispatchProps extends Array<infer A> ? Array<HandleThunkActionCreator<A>>
|
169 | : TDispatchProps extends ReadonlyArray<infer A> ? ReadonlyArray<HandleThunkActionCreator<A>>
|
170 | : never
|
171 | ;
|
172 |
|
173 |
|
174 |
|
175 |
|
176 |
|
177 |
|
178 |
|
179 |
|
180 |
|
181 |
|
182 |
|
183 |
|
184 |
|
185 |
|
186 |
|
187 |
|
188 |
|
189 |
|
190 |
|
191 |
|
192 | export interface Connect {
|
193 |
|
194 | (): InferableComponentEnhancer<DispatchProp>;
|
195 |
|
196 | <TStateProps = {}, no_dispatch = {}, TOwnProps = {}, State = DefaultRootState>(
|
197 | mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>
|
198 | ): InferableComponentEnhancerWithProps<TStateProps & DispatchProp, TOwnProps>;
|
199 |
|
200 | <no_state = {}, TDispatchProps = {}, TOwnProps = {}>(
|
201 | mapStateToProps: null | undefined,
|
202 | mapDispatchToProps: MapDispatchToPropsNonObject<TDispatchProps, TOwnProps>
|
203 | ): InferableComponentEnhancerWithProps<TDispatchProps, TOwnProps>;
|
204 |
|
205 | <no_state = {}, TDispatchProps = {}, TOwnProps = {}>(
|
206 | mapStateToProps: null | undefined,
|
207 | mapDispatchToProps: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,
|
208 | ): InferableComponentEnhancerWithProps<
|
209 | ResolveThunks<TDispatchProps>,
|
210 | TOwnProps
|
211 | >;
|
212 |
|
213 | <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}, State = DefaultRootState>(
|
214 | mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,
|
215 | mapDispatchToProps: MapDispatchToPropsNonObject<TDispatchProps, TOwnProps>
|
216 | ): InferableComponentEnhancerWithProps<TStateProps & TDispatchProps, TOwnProps>;
|
217 |
|
218 | <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}, State = DefaultRootState>(
|
219 | mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,
|
220 | mapDispatchToProps: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,
|
221 | ): InferableComponentEnhancerWithProps<
|
222 | TStateProps & ResolveThunks<TDispatchProps>,
|
223 | TOwnProps
|
224 | >;
|
225 |
|
226 | <no_state = {}, no_dispatch = {}, TOwnProps = {}, TMergedProps = {}>(
|
227 | mapStateToProps: null | undefined,
|
228 | mapDispatchToProps: null | undefined,
|
229 | mergeProps: MergeProps<undefined, undefined, TOwnProps, TMergedProps>,
|
230 | ): InferableComponentEnhancerWithProps<TMergedProps, TOwnProps>;
|
231 |
|
232 | <TStateProps = {}, no_dispatch = {}, TOwnProps = {}, TMergedProps = {}, State = DefaultRootState>(
|
233 | mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,
|
234 | mapDispatchToProps: null | undefined,
|
235 | mergeProps: MergeProps<TStateProps, undefined, TOwnProps, TMergedProps>,
|
236 | ): InferableComponentEnhancerWithProps<TMergedProps, TOwnProps>;
|
237 |
|
238 | <no_state = {}, TDispatchProps = {}, TOwnProps = {}, TMergedProps = {}>(
|
239 | mapStateToProps: null | undefined,
|
240 | mapDispatchToProps: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,
|
241 | mergeProps: MergeProps<undefined, TDispatchProps, TOwnProps, TMergedProps>,
|
242 | ): InferableComponentEnhancerWithProps<TMergedProps, TOwnProps>;
|
243 |
|
244 | <TStateProps = {}, no_dispatch = {}, TOwnProps = {}, State = DefaultRootState>(
|
245 | mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,
|
246 | mapDispatchToProps: null | undefined,
|
247 | mergeProps: null | undefined,
|
248 | options: Options<State, TStateProps, TOwnProps>
|
249 | ): InferableComponentEnhancerWithProps<DispatchProp & TStateProps, TOwnProps>;
|
250 |
|
251 | <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}>(
|
252 | mapStateToProps: null | undefined,
|
253 | mapDispatchToProps: MapDispatchToPropsNonObject<TDispatchProps, TOwnProps>,
|
254 | mergeProps: null | undefined,
|
255 | options: Options<{}, TStateProps, TOwnProps>
|
256 | ): InferableComponentEnhancerWithProps<TDispatchProps, TOwnProps>;
|
257 |
|
258 | <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}>(
|
259 | mapStateToProps: null | undefined,
|
260 | mapDispatchToProps: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,
|
261 | mergeProps: null | undefined,
|
262 | options: Options<{}, TStateProps, TOwnProps>
|
263 | ): InferableComponentEnhancerWithProps<
|
264 | ResolveThunks<TDispatchProps>,
|
265 | TOwnProps
|
266 | >;
|
267 |
|
268 | <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}, State = DefaultRootState>(
|
269 | mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,
|
270 | mapDispatchToProps: MapDispatchToPropsNonObject<TDispatchProps, TOwnProps>,
|
271 | mergeProps: null | undefined,
|
272 | options: Options<State, TStateProps, TOwnProps>
|
273 | ): InferableComponentEnhancerWithProps<TStateProps & TDispatchProps, TOwnProps>;
|
274 |
|
275 | <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}, State = DefaultRootState>(
|
276 | mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,
|
277 | mapDispatchToProps: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,
|
278 | mergeProps: null | undefined,
|
279 | options: Options<State, TStateProps, TOwnProps>
|
280 | ): InferableComponentEnhancerWithProps<
|
281 | TStateProps & ResolveThunks<TDispatchProps>,
|
282 | TOwnProps
|
283 | >;
|
284 |
|
285 | <TStateProps = {}, TDispatchProps = {}, TOwnProps = {}, TMergedProps = {}, State = DefaultRootState>(
|
286 | mapStateToProps: MapStateToPropsParam<TStateProps, TOwnProps, State>,
|
287 | mapDispatchToProps: MapDispatchToPropsParam<TDispatchProps, TOwnProps>,
|
288 | mergeProps: MergeProps<TStateProps, TDispatchProps, TOwnProps, TMergedProps>,
|
289 | options?: Options<State, TStateProps, TOwnProps, TMergedProps>
|
290 | ): InferableComponentEnhancerWithProps<TMergedProps, TOwnProps>;
|
291 |
|
292 | }
|
293 |
|
294 |
|
295 |
|
296 |
|
297 | export type ConnectedProps<TConnector> =
|
298 | TConnector extends InferableComponentEnhancerWithProps<infer TInjectedProps, any>
|
299 | ? TInjectedProps
|
300 | : never;
|
301 |
|
302 |
|
303 |
|
304 |
|
305 | export const connect: Connect;
|
306 |
|
307 | export type MapStateToProps<TStateProps, TOwnProps, State = DefaultRootState> =
|
308 | (state: State, ownProps: TOwnProps) => TStateProps;
|
309 |
|
310 | export type MapStateToPropsFactory<TStateProps, TOwnProps, State = DefaultRootState> =
|
311 | (initialState: State, ownProps: TOwnProps) => MapStateToProps<TStateProps, TOwnProps, State>;
|
312 |
|
313 | export type MapStateToPropsParam<TStateProps, TOwnProps, State = DefaultRootState> =
|
314 | MapStateToPropsFactory<TStateProps, TOwnProps, State> | MapStateToProps<TStateProps, TOwnProps, State> | null | undefined;
|
315 |
|
316 | export type MapDispatchToPropsFunction<TDispatchProps, TOwnProps> =
|
317 | (dispatch: Dispatch<Action>, ownProps: TOwnProps) => TDispatchProps;
|
318 |
|
319 | export type MapDispatchToProps<TDispatchProps, TOwnProps> =
|
320 | MapDispatchToPropsFunction<TDispatchProps, TOwnProps> | TDispatchProps;
|
321 |
|
322 | export type MapDispatchToPropsFactory<TDispatchProps, TOwnProps> =
|
323 | (dispatch: Dispatch<Action>, ownProps: TOwnProps) => MapDispatchToPropsFunction<TDispatchProps, TOwnProps>;
|
324 |
|
325 | export type MapDispatchToPropsParam<TDispatchProps, TOwnProps> = MapDispatchToPropsFactory<TDispatchProps, TOwnProps> | MapDispatchToProps<TDispatchProps, TOwnProps>;
|
326 |
|
327 | export type MapDispatchToPropsNonObject<TDispatchProps, TOwnProps> = MapDispatchToPropsFactory<TDispatchProps, TOwnProps> | MapDispatchToPropsFunction<TDispatchProps, TOwnProps>;
|
328 |
|
329 | export type MergeProps<TStateProps, TDispatchProps, TOwnProps, TMergedProps> =
|
330 | (stateProps: TStateProps, dispatchProps: TDispatchProps, ownProps: TOwnProps) => TMergedProps;
|
331 |
|
332 | export interface Options<State = DefaultRootState, TStateProps = {}, TOwnProps = {}, TMergedProps = {}> extends ConnectOptions {
|
333 | |
334 |
|
335 |
|
336 |
|
337 |
|
338 |
|
339 |
|
340 | pure?: boolean;
|
341 |
|
342 | |
343 |
|
344 |
|
345 |
|
346 | areStatesEqual?: (nextState: State, prevState: State) => boolean;
|
347 |
|
348 | |
349 |
|
350 |
|
351 |
|
352 | areOwnPropsEqual?: (nextOwnProps: TOwnProps, prevOwnProps: TOwnProps) => boolean;
|
353 |
|
354 | |
355 |
|
356 |
|
357 |
|
358 | areStatePropsEqual?: (nextStateProps: TStateProps, prevStateProps: TStateProps) => boolean;
|
359 |
|
360 | |
361 |
|
362 |
|
363 |
|
364 | areMergedPropsEqual?: (nextMergedProps: TMergedProps, prevMergedProps: TMergedProps) => boolean;
|
365 |
|
366 | |
367 |
|
368 |
|
369 |
|
370 |
|
371 | forwardRef?: boolean;
|
372 | }
|
373 |
|
374 |
|
375 |
|
376 |
|
377 |
|
378 |
|
379 |
|
380 |
|
381 |
|
382 |
|
383 |
|
384 | export function connectAdvanced<S, TProps, TOwnProps, TFactoryOptions = {}>(
|
385 |
|
386 | selectorFactory: SelectorFactory<S, TProps, TOwnProps, TFactoryOptions>,
|
387 | connectOptions?: ConnectOptions & TFactoryOptions
|
388 | ): AdvancedComponentDecorator<TProps, TOwnProps>;
|
389 |
|
390 |
|
391 |
|
392 |
|
393 |
|
394 |
|
395 |
|
396 |
|
397 |
|
398 | export type SelectorFactory<S, TProps, TOwnProps, TFactoryOptions> =
|
399 | (dispatch: Dispatch<Action>, factoryOptions: TFactoryOptions) => Selector<S, TProps, TOwnProps>;
|
400 |
|
401 | export type Selector<S, TProps, TOwnProps = null> = TOwnProps extends null | undefined
|
402 | ? (state: S) => TProps
|
403 | : (state: S, ownProps: TOwnProps) => TProps;
|
404 |
|
405 | export interface ConnectOptions {
|
406 | |
407 |
|
408 |
|
409 |
|
410 |
|
411 |
|
412 |
|
413 | getDisplayName?: (componentName: string) => string;
|
414 | |
415 |
|
416 |
|
417 |
|
418 |
|
419 | methodName?: string;
|
420 | |
421 |
|
422 |
|
423 |
|
424 |
|
425 |
|
426 |
|
427 | renderCountProp?: string;
|
428 | |
429 |
|
430 |
|
431 |
|
432 |
|
433 |
|
434 | shouldHandleStateChanges?: boolean;
|
435 | |
436 |
|
437 |
|
438 |
|
439 |
|
440 |
|
441 | storeKey?: string;
|
442 | |
443 |
|
444 |
|
445 |
|
446 |
|
447 | withRef?: boolean;
|
448 | |
449 |
|
450 |
|
451 |
|
452 |
|
453 | context?: Context<ReactReduxContextValue>;
|
454 | }
|
455 |
|
456 | export interface ReactReduxContextValue<SS = any, A extends Action = AnyAction> {
|
457 | store: Store<SS, A>;
|
458 | storeState: SS;
|
459 | }
|
460 |
|
461 | export interface ProviderProps<A extends Action = AnyAction> {
|
462 | |
463 |
|
464 |
|
465 | store: Store<any, A>;
|
466 | |
467 |
|
468 |
|
469 |
|
470 |
|
471 | context?: Context<ReactReduxContextValue>;
|
472 | }
|
473 |
|
474 |
|
475 |
|
476 |
|
477 | export class Provider<A extends Action = AnyAction> extends Component<ProviderProps<A>> { }
|
478 |
|
479 |
|
480 |
|
481 |
|
482 |
|
483 | export const ReactReduxContext: Context<ReactReduxContextValue>;
|
484 |
|
485 |
|
486 |
|
487 |
|
488 |
|
489 | export function batch(cb: () => void): void;
|
490 |
|
491 |
|
492 |
|
493 |
|
494 |
|
495 |
|
496 |
|
497 |
|
498 | export function shallowEqual<T>(left: T, right: any): boolean;
|
499 |
|
500 |
|
501 |
|
502 |
|
503 |
|
504 |
|
505 |
|
506 |
|
507 |
|
508 |
|
509 |
|
510 |
|
511 |
|
512 |
|
513 |
|
514 |
|
515 |
|
516 |
|
517 |
|
518 |
|
519 |
|
520 |
|
521 |
|
522 |
|
523 |
|
524 |
|
525 |
|
526 |
|
527 |
|
528 | export function useDispatch<TDispatch = Dispatch<any>>(): TDispatch;
|
529 | export function useDispatch<A extends Action = AnyAction>(): Dispatch<A>;
|
530 |
|
531 |
|
532 |
|
533 |
|
534 |
|
535 |
|
536 |
|
537 |
|
538 |
|
539 |
|
540 |
|
541 |
|
542 |
|
543 |
|
544 |
|
545 |
|
546 |
|
547 |
|
548 |
|
549 |
|
550 |
|
551 |
|
552 |
|
553 |
|
554 |
|
555 |
|
556 |
|
557 |
|
558 |
|
559 | export function useSelector<TState = DefaultRootState, TSelected = unknown>(
|
560 | selector: (state: TState) => TSelected,
|
561 | equalityFn?: (left: TSelected, right: TSelected) => boolean
|
562 | ): TSelected;
|
563 |
|
564 |
|
565 |
|
566 |
|
567 |
|
568 |
|
569 |
|
570 |
|
571 |
|
572 |
|
573 |
|
574 |
|
575 |
|
576 |
|
577 | export interface TypedUseSelectorHook<TState> {
|
578 | <TSelected>(
|
579 | selector: (state: TState) => TSelected,
|
580 | equalityFn?: (left: TSelected, right: TSelected) => boolean
|
581 | ): TSelected;
|
582 | }
|
583 |
|
584 |
|
585 |
|
586 |
|
587 |
|
588 |
|
589 |
|
590 |
|
591 |
|
592 |
|
593 |
|
594 |
|
595 |
|
596 |
|
597 |
|
598 |
|
599 | export function useStore<S = RootStateOrAny, A extends Action = AnyAction>(): Store<S, A>;
|
600 |
|
601 |
|
602 |
|
603 |
|
604 |
|
605 |
|
606 |
|
607 | export function createSelectorHook(context?: Context<ReactReduxContextValue>): typeof useSelector;
|
608 |
|
609 |
|
610 |
|
611 |
|
612 |
|
613 |
|
614 |
|
615 | export function createStoreHook(context?: Context<ReactReduxContextValue>): typeof useStore;
|
616 |
|
617 |
|
618 |
|
619 |
|
620 |
|
621 |
|
622 |
|
623 | export function createDispatchHook(context?: Context<ReactReduxContextValue>): typeof useDispatch;
|
624 |
|
625 |
|