Tim*_*Tim 2 typescript react-hooks
所以我有这个自定义钩子来解码令牌
export function useToken(initial: string) {
const [token, setToken] = useState<string>(initial)
const [decoded, setDecoded] = useState<Token>()
useEffect(() => {
if (token) {
const value = decodeToken(token)
if (isTokenExpired(value)) {
setDecoded(undefined)
} else {
setDecoded(value)
}
} else {
setDecoded(undefined)
}
}, [token])
return [decoded, setToken]
}
Run Code Online (Sandbox Code Playgroud)
返回类型看起来不错,这里有一个
[Token, React.Dispatch<React.SetStateAction<string>>]
Run Code Online (Sandbox Code Playgroud)
我有另一个钩子使用这个钩子,但它看到的返回类型不正确
export function useUser() {
const [decoded, setToken] = useToken(getTokenFromStorage())
//...
Run Code Online (Sandbox Code Playgroud)
这里 useToken 给了 decoded 和 setToken 相同类型的
Token | React.Dispatch<React.SetStateAction<string>>
Run Code Online (Sandbox Code Playgroud)
IE
decoded: Token | React.Dispatch<React.SetStateAction<string>>, setToken: Token | React.Dispatch<React.SetStateAction<string>>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么...
前几天我也遇到了同样的问题!
您必须明确返回类型,因为 Typescript 没有正确推断类型。
例如:
export function useToken(initial: string): [Token, React.Dispatch<React.SetStateAction<string>>] {
}
Run Code Online (Sandbox Code Playgroud)
那应该可以解决它...我认为这是一个打字稿错误,所以可能需要为它解决一个问题。
| 归档时间: |
|
| 查看次数: |
983 次 |
| 最近记录: |