我是Typescript和Redux的新手,所以请多多包涵。 能够使用
useSelector((state: RootState) => state.auth.authError);
我必须输入我的减速器,就像这样:
let authReducer: (state: any, action: any) => AuthState
其中AuthState为:
interface AuthState {
authError: string;
isLoading: boolean;
}
现在我可以成功使用useSelector
,但是在创建rootReducer
const rootReducer = combineReducers({
auth: authReducer,
firebase: firebaseReducer,
});
我的firebaseReducer丢失了其原始类型,现在的类型为firebase: Reducer<unknown, any>
。因此,我无法从状态访问Firebase来检查Firebase是否已加载,以防止未经授权访问需要登录的页面。基本上:
useSelector((state: RootState) => state.firebase.auth)
抛出:对象的类型为“未知”。
这是我的商店创建:
const store = createStore(
rootReducer,
applyMiddleware(thunk.withExtraArgument({ getFirebase }))
);
和我的RootState:
export type RootState = ReturnType<typeof rootReducer>;
我也尝试过export type RootState = ReturnType<typeof store.getState>;
编辑:
我找到了一个临时解决方案。
用useSelector((state: RootState) => state.firebase.auth)
替换useSelector((state: any) => state.firebase.auth)
可以并且不会引发错误,但这不是最佳解决方案。