簡體   English   中英

React Typescript - 類型參數不可分配給類型參數

[英]React Typescript - Argument of type is not assignable to parameter of type

這里有演示

這是一個 React 應用程序,使用 Typescript 和鈎子將條目捕獲到下面簡單顯示的表單中。

在 Stackblitz 中,它可以工作,但在本地我使用的是 VS 代碼,我收到setUser(userData); 錯誤是

const userData: {
    username: string;
    password: string;
    prevState: null;
}
Argument of type '{ username: string; password: string; prevState: null; }' is not assignable to parameter of type '(prevState: null) => null'.
  Type '{ username: string; password: string; prevState: null; }' provides no match for the signature '(prevState: null): null'.ts(2345)

我怎樣才能解決這個打字稿錯誤

const [user, setUser] = useState(null);

因為你沒有給它一個類型,typescript 必須嘗試推斷它。 它看到您傳入了一個空值,因此它假定此狀態為(並且始終為)空值。 相反,您需要指定類型,如:

interface UserData {
  username: string;
  password: string;
  prevState: null
}

//...
const [user, setUser] = useState<UserData | null>(null);

如果你從 API 獲取數據,你需要這個:

import React, { useState, useEffect } from 'react'
import axios from 'axios';

const MyComponent = () => {
const [data, setData] = useState<any | null>(null);
const fetchData = () => {
(...) //Axios.get() or async if u await data.
setData(fetchData)
}
}
useEffect(() =>{
    fetchData()
}, [])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM