pod*_*eig 5 typescript reactjs redux react-redux
我正在尝试使用 react + redux + typescript 设置前端环境,但我正在努力使其与 combineReducers 一起工作。我收到一个错误:类型参数不能分配给“ReducersMapObject”类型的参数。请参阅代码下方的完整错误消息。
状态:(类型/index.tsx)
export namespace StoreState {
export type Enthusiasm = {
languageName: string;
enthusiasmLevel: number;
}
export type All = {
enthusiasm: Enthusiasm
}
}
Run Code Online (Sandbox Code Playgroud)
商店:(商店.tsx)
import { createStore } from 'redux';
import reducers from './reducers/index';
import { StoreState } from './types/index';
let devtools: any = window['devToolsExtension'] ? window['devToolsExtension']() : (f:any)=>f;
const Store = createStore<StoreState.All>(reducers, devtools);
export default Store;
Run Code Online (Sandbox Code Playgroud)
减速器:(/减速器/HelloReducer.tsx)
import { EnthusiasmAction } from '../actions';
import { StoreState } from '../types/index';
import { INCREMENT_ENTHUSIASM, DECREMENT_ENTHUSIASM } from '../constants/index';
export const enthusiasm = (state: StoreState.Enthusiasm,
action: EnthusiasmAction): StoreState.Enthusiasm => {
switch (action.type) {
case INCREMENT_ENTHUSIASM:
return { ...state, enthusiasmLevel: state.enthusiasmLevel + 1 };
case DECREMENT_ENTHUSIASM:
return { ...state, enthusiasmLevel: Math.max(1, state.enthusiasmLevel - 1) };
default:
return state;
}
}
Run Code Online (Sandbox Code Playgroud)
组合减速器 (/reducers/index.tsx)
import { StoreState } from '../types/index';
import * as enthusiasmReducer from './HelloReducer';
import { combineReducers } from 'redux';
const reducer = combineReducers<StoreState.All>({
enthusiasm: enthusiasmReducer
});
export default reducer;
Run Code Online (Sandbox Code Playgroud)
您正在传递带有所有导出的对象,HelloReducer而不仅仅是减速器。有几种方法可以修复它。您可以选择减速机:
const reducer = combineReducers<StoreState.All>({
enthusiasm: enthusiasmReducer.enthusiasm
});
Run Code Online (Sandbox Code Playgroud)
或仅导入减速器:
import {enthusiasm} from './HelloReducer';
..
const reducer = combineReducers({enthusiasm});
Run Code Online (Sandbox Code Playgroud)
或添加export default enthusiasm;并将HelloReducer.tsx导入更改为
import enthusiasmReducer from './HelloReducer';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10362 次 |
| 最近记录: |