Skip to content

Commit de7adeb

Browse files
refactor(store): add useTypedSelector hook
1 parent c27a537 commit de7adeb

File tree

5 files changed

+17
-13
lines changed

5 files changed

+17
-13
lines changed

src/containers/Tenant/Diagnostics/Consumers/Consumers.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import {useEffect, useState} from 'react';
2-
import {useDispatch, useSelector} from 'react-redux';
2+
import {useDispatch} from 'react-redux';
33
import block from 'bem-cn-lite';
44

55
import DataTable, {Column} from '@yandex-cloud/react-data-table';
66

7-
import {IRootState} from '../../../../store/reducers';
87
import {DEFAULT_TABLE_SETTINGS} from '../../../../utils/constants';
9-
import {useAutofetcher} from '../../../../utils/hooks';
8+
import {useAutofetcher, useTypedSelector} from '../../../../utils/hooks';
109
import {Search} from '../../../../components/Search';
1110
import {getDescribe, selectConsumers} from '../../../../store/reducers/describe';
1211

@@ -29,7 +28,7 @@ export const Consumers = ({path}: ConsumersProps) => {
2928

3029
useAutofetcher(fetchData, [path]);
3130

32-
const consumers = useSelector((state: IRootState) => selectConsumers(state, path));
31+
const consumers = useTypedSelector((state) => selectConsumers(state, path));
3332

3433
const [consumersToRender, setConsumersToRender] = useState(consumers);
3534

src/containers/Tenant/Diagnostics/Healthcheck/Healthcheck.tsx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import {useCallback} from 'react';
2-
import {useDispatch, useSelector} from 'react-redux';
2+
import {useDispatch} from 'react-redux';
33
import cn from 'bem-cn-lite';
44

55
import {Loader} from '@gravity-ui/uikit';
66

77
import {SelfCheckResult} from '../../../../types/api/healthcheck';
8-
import {IRootState} from '../../../../store/reducers';
8+
import {useTypedSelector, useAutofetcher} from '../../../../utils/hooks';
99
import {
1010
getHealthcheckInfo,
1111
selectIssuesTreeById,
1212
selectIssuesTreesRoots,
1313
} from '../../../../store/reducers/healthcheckInfo';
14-
import {useAutofetcher} from '../../../../utils/hooks';
1514

1615
import {Details} from './Details';
1716
import {Preview} from './Preview';
@@ -34,17 +33,15 @@ export const Healthcheck = (props: HealthcheckProps) => {
3433

3534
const dispatch = useDispatch();
3635

37-
const {data, loading, wasLoaded, error} = useSelector(
38-
(state: IRootState) => state.healthcheckInfo,
39-
);
36+
const {data, loading, wasLoaded, error} = useTypedSelector((state) => state.healthcheckInfo);
4037
const selfCheckResult = data?.self_check_result || SelfCheckResult.UNSPECIFIED;
4138

42-
const issuesTreesRoots = useSelector(selectIssuesTreesRoots);
43-
const expandedIssueTree = useSelector((state: IRootState) =>
39+
const issuesTreesRoots = useTypedSelector(selectIssuesTreesRoots);
40+
const expandedIssueTree = useTypedSelector((state) =>
4441
selectIssuesTreeById(state, expandedIssueId),
4542
);
4643

47-
const {autorefresh} = useSelector((state: any) => state.schema);
44+
const {autorefresh} = useTypedSelector((state) => state.schema);
4845

4946
const fetchHealthcheck = useCallback(() => {
5047
dispatch(getHealthcheckInfo(tenant));

src/store/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,6 @@ function configureStore(aRootReducer = rootReducer, singleClusterMode = true) {
3232
export const webVersion = window.web_version;
3333
export const customBackend = window.custom_backend;
3434

35+
export * from "./reducers"
36+
3537
export default configureStore;

src/utils/hooks/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
export * from './useAutofetcher';
2+
export * from './useTypedSelector';
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import {TypedUseSelectorHook, useSelector} from 'react-redux';
2+
3+
import {IRootState} from '../../store';
4+
5+
export const useTypedSelector: TypedUseSelectorHook<IRootState> = useSelector;

0 commit comments

Comments
 (0)