Reactjs 如何在React with typescript中正确使用useState钩子?
我试图在react with typescript中创建一个登录表单。但setEmail方法不接受该值。它表示“string”类型的参数不能分配给“SetStateAction”类型的参数。我该怎么解决它Reactjs 如何在React with typescript中正确使用useState钩子?,reactjs,typescript,react-hooks,use-state,Reactjs,Typescript,React Hooks,Use State,我试图在react with typescript中创建一个登录表单。但setEmail方法不接受该值。它表示“string”类型的参数不能分配给“SetStateAction”类型的参数。我该怎么解决它 如果没有任何初始参数,email和setEmail的类型将是未定义的 const [email, setEmail]: [undefined, (value: ((prevState: undefined) => undefined) | undefined) => void] =
如果没有任何初始参数,
email
和setEmail
的类型将是未定义的
const [email, setEmail]: [undefined, (value: ((prevState: undefined) => undefined) | undefined) => void] = useState();
因此,第一步是通过使用
useState(“”
)或更好的useState(“”
”,使用空字符串初始化useState将解决此问题
useState可以根据您的initialState推断类型,这就是为什么使用空字符串初始化可以解决您的问题
没有initialState的useState将未定义,因此您的类型和状态未定义
const [email, setEmail]: [undefined, (value: ((prevState: undefined) => undefined) | undefined) => void] = useState();
如果希望状态具有更复杂的类型,则需要传递具有已定义类型的initialState:
const initialState: TYPE = {
// ...
};
const [state, setState] = useState(initialState);
或
将类型传递给useState,而不将类型设置为initialState,如:
useState(initialState)代码>您可以为其设置字符串类型
明确方式:
const[email,setEmail]=useState(“”)
或隐式方式:
const[email,setEmail]=useState(“”)
或者如果要设置数字类型
const [email, setEmail] = useState<string>("")
const[inputNumber,setInputNumber]=useState(0);
然后在jsx中这样做
{
//一些方法可以做到这一点
setInputNumber(Number(val.target.value));
setInputNumber(+val.target.value);
setInputNumber(parseInt(val.target.value,0));
}}
/>
在本例中,您只需将generic与useState
hook一起使用即可
简单案例
const [email, setEmail] = useState<string>("")
- 使
useState
通用
const[email,setEmail]=useState({email:'})
您可以看到您需要向上面的钩子添加默认字符串值<代码>[email,setEmail]=useState(“”)
另请参见: