【发布时间】:2020-12-03 04:27:40
【问题描述】:
大家好,前来帮忙的人。代码可以编译并且可以工作,但是 TypeScript 会抛出一个错误,即“数字”类型上不存在属性“id”。
如果您深入查看该钩子,您会发现step 属性在其接口中属于number 类型。
此条目出现错误:step.id
import React, { useEffect, useState } from 'react'
import FirstStep from './steps/firstStep'
import {useForm, useStep} from 'react-hooks-helper'
interface IDefaultData2 {
id: string
}
const steps : any = [
{id: 'firstStep'},
{id: 'secondStep'},
{id: 'thirdStep'},
{id: 'confirm'},
{id: 'success'}
]
const UserForm: React.FC = () => {
const {step, navigation} = useStep({
steps,
initialStep: 0
})
console.log(typeof(step)) // object
console.log(typeof(step.id)) // string
console.log(step.id) // "firstStep"
return (
<>
{
(() => {
switch(step.id){
case 'firstStep': return <FirstStep/>
}
})()
}
</>
)
}
export default UserForm
不喜欢什么?
解决方案:
- 添加
interface useStepType {
step: any,
navigation: any,
}
- 编辑
来自
const { step, navigation } = useStep({
steps,
initialStep: 0
})
收件人
const { step, navigation }: useStepType = useStep({
steps,
initialStep: 0
})
特别感谢 Tomas Gonzalez
【问题讨论】:
-
什么是
useStep? -
Typescript 认为 step 是一个数字,但它实际上是一个对象
-
@CertainPerformance,我正在根据 youtube 教程 youtube.com/watch?v=HuJDKp-9HHc&t=157s 做多种形式。他在那里使用了 react-hook-helper 钩子。其中'useStep'是新的useTrafficLight,是一个更通用的步骤向导。您可以使用它来简化许多任务,例如多页输入表单或图像轮播。它具有自动前进功能,或通过调用上一个和/或下一个手动控制。
-
@user2258152,那么我该如何解决呢?这是错误
-
请在问题本身中发布minimal reproducible example,包括
useStep,这对于理解代码中发生的事情至关重要
标签: javascript reactjs typescript