useStateとInterFace
9493 ワード
interface CoinInterface {
id: string;
name: string;
symbol: string;
rank: number;
is_new: boolean;
is_active: boolean;
type: string;
}
const Loader = styled.span`
text-align: center;
display: block;
`;
function Coins() {
const [coins, setCoins] = useState<CoinInterface[]>([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
(async () => {
const response = await (
await fetch("http://api.coinpaprika.com/v1/coins")
).json();
setCoins(response.slice(0, 101));
setLoading(false);
})();
}, []);
return (
<Container>
<Header>
<Title>Coin Tracker</Title>
</Header>
{loading ? (
<Loader>Loading...</Loader>
) : (
<CoinsList>
{coins.map((coin) => (
<Coin key={coin.id}>
<Link to={`/${coin.id}`}>{coin.name} →</Link>
</Coin>
))}
</CoinsList>
)}
</Container>
);
}
const [coins, setCoins] = useState<CoinInterface[]>([]);
この点は本当に分かりません.arrayがusStateからinitialValueまで、
<CoinInterface>
と書くとArgument of type 'never[]' is not assignable to parameter of type 'CoinInterface | (() => CoinInterface)'
これで間違いだパンツで聞くと、上のように書いてあるとタイプスクリプトが理解できないかもしれません.したがって,インタフェースにもタイプを別途明記する.
Reference
この問題について(useStateとInterFace), 我々は、より多くの情報をここで見つけました https://velog.io/@gktmd652/useState와-InterFaceテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol