【发布时间】:2020-07-01 19:24:49
【问题描述】:
在上面的问题上苦苦挣扎。看到类似的问题,但无法弄清楚。
下面的代码是我第一次尝试在使用 .js 和 .jsx 的现有 React 项目中使用 TypeScript 打开和关闭对话框。
import Button from '@material-ui/core/Button';
import Dialog from '@material-ui/core/Dialog';
import DialogActions from '@material-ui/core/DialogActions';
import DialogContent from '@material-ui/core/DialogContent';
import {useDispatch, useSelector} from 'react-redux';
import {closeTsDialog} from '../actions/tsDialog'
import {ActionTypes} from '../actions/types';
const TsApp = (): JSX.Element => {
const dispatch = useDispatch();
// ERROR SHOWS UP ON LINE BELOW "state?.tsReducer?.isDialogOpen"
const isDialogOpen = useSelector(state => state?.tsReducer?.isDialogOpen);
const state = useSelector(s => s);
console.log('->>>>>> state', state);
// main tsx excluded to allow for posting on stackoverflow
};
export default TsApp;
import {TsDialogAction} from "../actions/tsDialog";
const initialState = {
id: 0,
isDialogOpen: false
};
const tsReducer = (state: TsDialogAction = initialState, action: Action) => {
switch (action.type) {
case ActionTypes.closeDialog: {
return {...state, isDialogOpen: false};
}
case ActionTypes.openDialog: {
return {...state, isDialogOpen: true};
}
default:
return state;
}
};
export default tsReducer;
从'./types'导入{ActionTypes};
导出接口 TsDialogAction { isDialogOpen:布尔值 数:数 }
导出接口 CloseTsDialog { 类型:ActionTypes.closeDialog 有效载荷:TsDialogAction }
导出接口 OpenTsDialog { 类型:ActionTypes.openDialog 有效载荷:TsDialogAction }
导出接口增量{ 类型:ActionTypes.increment 有效载荷:TsDialogAction }
导出接口减量{ 类型:ActionTypes.decrement 有效载荷:TsDialogAction }
export const closeTsDialog = (id: number) => ({type: ActionTypes.closeDialog, payload: id}); export const openTsDialog = (id: number) => ({type: ActionTypes.openDialog, payload: id}); export const incrementAction = (id: number) => ({type: ActionTypes.increment, payload: id}); export const decrementAction = (id: number) => ({type: ActionTypes.decrement, payload: id});
【问题讨论】:
标签: reactjs typescript redux