如何在打字稿中使用 useSelector

时间:2021-07-18 09:35:04

标签: typescript redux

这是我的代码 useSelector

const  user  = useSelector<RootStateOrAny, typeof typeRootReducer>((state) => state.user)

在 rootReducer 中

const rootReducer = combineReducers({
    user: userReducer
})


export default rootReducer
export type typeRootReducer =  ReturnType<typeof rootReducer>

初始化状态

const initState = {
    user: null
}

当我尝试 console.log(user.user.name) 时,它只会给我 cannot read property name of null

1 个答案:

答案 0 :(得分:0)

嗯,你的 user 是 - 正如你自己写的 - null。所以你正在调用 null.name,这是行不通的。您的选择器使用本身没有任何问题,只是您的状态包含与您的代码不匹配的内容。

一般来说,为了避免你在那里做的所有类型体操,建议创建一个 useAppSelector 预类型的钩子,这样你就可以 const user = useAppSelector(state => state.user),所有内容都会自动正确输入。

按照 TypeScript Quick Start 教程进行操作。