/
lizardking
/
react_final
Обзор
Документация
Войти
/
lizardking
/
react_final
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
old
src/shared/api/hooks/useActionCreated.ts
25 строк
915 B
LizardKing
Initial commit
22 ноя 2025, 15:56
22 ноя 2025, 15:56
0df0d9e
Код
Авторство
О чём код?
import type { ActionCreatorsMapObject, AsyncThunk } from '@reduxjs/toolkit' import { bindActionCreators } from '@reduxjs/toolkit' import { useMemo } from 'react' import { useAppDispatch } from '../../store/utils' export const useActionCreators = <Actions extends ActionCreatorsMapObject>( actions: Actions ): BoundActions<Actions> => { const dispatch = useAppDispatch() return useMemo(() => bindActionCreators(actions, dispatch), [actions, dispatch]) } type BoundActions<Actions extends ActionCreatorsMapObject> = { // eslint-disable-next-line @typescript-eslint/no-explicit-any [key in keyof Actions]: Actions[key] extends AsyncThunk<any, any, any> ? BoundAsyncThunk<Actions[key]> : Actions[key] } // eslint-disable-next-line @typescript-eslint/no-explicit-any type BoundAsyncThunk<Thunk extends AsyncThunk<any, any, any>> = ( ...args: Parameters<Thunk> ) => ReturnType<ReturnType<Thunk>>