在 React 打字稿中禁用 RootStateOrAny?
Disable RootStateOrAny in React typescript?
每次我想使用useSelector
我必须做这样的事情:
const isLoading = useSelector(
(state: RootStateOrAny) => state.utils.isLoading
);
有什么办法可以避免每次都输入 RootStateOrAny
吗?越来越烦人了。
是的。首先,你应该 而不是 使用 RootStateOrAny
类型——这是 React-Redux 的内部类型。相反,您应该使用自己应用的 RootState
类型。
其次,您应该特别遵循我们推荐的 Redux + TypeScript 设置指南,以及 create a "pre-typed" version of the useSelector
hook,例如:
// hooks.ts
import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'
import type { RootState, AppDispatch } from './store'
// Use throughout your app instead of plain `useDispatch` and `useSelector`
export const useAppDispatch = () => useDispatch<AppDispatch>()
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector
然后在各处使用那些预先键入的挂钩。
每次我想使用useSelector
我必须做这样的事情:
const isLoading = useSelector(
(state: RootStateOrAny) => state.utils.isLoading
);
有什么办法可以避免每次都输入 RootStateOrAny
吗?越来越烦人了。
是的。首先,你应该 而不是 使用 RootStateOrAny
类型——这是 React-Redux 的内部类型。相反,您应该使用自己应用的 RootState
类型。
其次,您应该特别遵循我们推荐的 Redux + TypeScript 设置指南,以及 create a "pre-typed" version of the useSelector
hook,例如:
// hooks.ts
import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'
import type { RootState, AppDispatch } from './store'
// Use throughout your app instead of plain `useDispatch` and `useSelector`
export const useAppDispatch = () => useDispatch<AppDispatch>()
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector
然后在各处使用那些预先键入的挂钩。