【发布时间】:2020-09-09 16:28:33
【问题描述】:
我在 Ionic 中使用 typescript 和 React 钩子,所以我在其中添加了我的 errorReducer 来处理用户从服务器获取的错误,以防出现任何问题。
下面是我的代码
动作
import { ERROR_OCCURED } from "./types";
export const errorActions = () => async (dispatch: any) => {
console.log('err action triggered')
dispatch({
type: ERROR_OCCURED
});
};
减速器
import { ERROR_OCCURED } from "../actions/types";
function fetchRedcuer(state = {}, action: any) {
switch (action.type) {
case ERROR_OCCURED:
return {
...state,
isauth:true
};
default:
return state;
}
}
export default fetchRedcuer;
然后在我的打字稿组件中
import { useSelector, useDispatch } from "react-redux";
import React, { useState, useEffect } from "react";
import { userRegisterAction } from "../../src/redux/actions/user";
import { RootState } from "../redux/reducers";
type IUser = {
error: { [isauth: string]: boolean };
};
const Signup: React.FC<IUser> = (props) => {
const [state, setState] = useState<IUser>({
error:{}
});
const dispatch = useDispatch();
const error = useSelector((state: RootState) => {
console.log(state.error); //here i get access to my state that is inside error reducer and also here i get error when i try to access boolean value
return { error: state.error };
});
console.log(error.error);
return (
<div>
</div>
);
};
export default Signup;
等等
console.log(state.error)
最初我得到{},但在状态更新后我得到
{isauth: true}
但是如果我尝试在 useSelector 中访问这个布尔值
console.log(state.error.isauth)
我收到了打字稿错误
类型“{}”上不存在属性“isauth”。
或者简单地说,我如何告诉 TypeScript 以某种方式最初跳过空的 object{} 并且不检查其键值对,因为更新状态需要一点时间
【问题讨论】:
标签: javascript reactjs typescript ionic4