在 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

然后在各处使用那些预先键入的挂钩。