我正在使用React Redux的useSelector(state => state.SLICE_NAME)
钩子,但是我很难定义state
参数.它默认设置为unknown
,所以当我试图返回state.SLICE_NAME
(Error: Object is of type 'unknown'
)时会出现错误.
如何定义state
类型,而不必手动创建单独的状态类型,并在创建时添加每个新的状态定义?
我试着将州定义为typeof store
,但这不起作用.
一些代码可以帮助解释:
// navDrawer.ts
import { createSlice } from "redux-starter-kit";
// navDrawer initial state
export interface NavDrawerInitialState {
open: boolean;
}
const navDrawerInitialState: NavDrawerInitialState = {
open: false
};
// Create state slice
const { actions, reducer } = createSlice({
slice: "navDrawer",
initialState: navDrawerInitialState,
reducers: {
open: (state: NavDrawerInitialState) => {
state.open = true;
},
close: (state: NavDrawerInitialState) => {
state.open = false;
}
}
});
export const navDrawerActions = actions;
export default reducer;
// reducers.ts
import navDrawer from "./navDrawer";
const reducers = {
navDrawer
};
export default reducers;
// store.ts
import { configureStore } from "redux-starter-kit";
import reducer from "./reducers";
const store = configureStore({
reducer
});
export default store;
// Page.tsx
import React, { FC } from "react";
import { Provider } from "react-redux";
import store from "./store";
import ChildComponent from "./ChildComponent";
const StateProvider: FC = () => {
return <Provider store={store}><ChildComponent /></Provider>;
};
export default StateProvider;
// ChildComponent.tsx
import React, { FC } from "react";
import { useSelector } from "react-redux";
const ChildComponent: FC = () => {
const navDrawerState = useSelector(state => state.navDrawer); // ERROR OCCURS HERE. "state" is defined as 'unknown' so "state.navDrawer" throws an error.
return <div>Text</div>
}
Edit:我注意到configureStore()
的类型定义包含state作为第一个泛型类型.见下面的截图.如果我能从EnhancedStore
中得到第一个通用值,那么我就能用它来定义状态.有没有办法用打字脚本来做这个?