[解決済み] ReactとTypescript、Axiosのレスポンスにはどの型?
2022-03-03 11:50:27
質問
私はこれを返すAPIから簡単なユーザーリストを提示しようとしています。
[{"UserID":2,"FirstName":"User2"},{"UserID":1,"FirstName":"User1"}]
Axiosの応答を型で処理する方法を完全に理解していません。Typescriptのエラーは
Type '{} | { id: number; firstName: string; }' is not assignable to type 'IntrinsicAttributes & UserListProps & { children?: ReactNode; }'.
Property 'items' is missing in type '{}' but required in type 'UserListProps'.
から
<UserList />
要素を
Users.tsx
ファイルを作成します。私の
User
のインターフェースは間違っていますか?
import React, {useEffect, useState, Fragment } from 'react';
import UserList from './UserList';
import axios, {AxiosResponse} from 'axios';
interface User {
id: number;
firstName: string;
}
const Users: React.FC = (props) => {
const [users, setUserList] = useState<User>();
useEffect(() => {
// Use [] as second argument in useEffect for not rendering each time
axios.get('http://localhost:8080/admin/users')
.then((response: AxiosResponse) => {
console.log(response.data);
setUserList( response.data );
});
}, []);
return (
<Fragment>
<UserList {...users} />
</Fragment>
);
};
export default Users;
以下は私の
UserList.tsx
.
import React, {Fragment } from 'react';
interface UserListProps {
items: {id: number, firstName: string}[];
};
const UserList: React.FC<UserListProps> = (props) => {
return (
<Fragment>
<ul>
{props.items.map(user => (
<li key={user.id}>
<span>{user.firstName}</span>
{/* not call delete function, just point to it
// set this to null in bind() */}
</li>
))}
</ul>
</Fragment>
);
};
export default UserList;
解決方法は?
があります。
一般的な
get
メソッドが定義されています。
axios/index.d.ts
get<T = never, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig<T>): Promise<R>;
例
interface User {
id: number;
firstName: string;
}
axios.get<User[]>('http://localhost:8080/admin/users')
.then(response => {
console.log(response.data);
setUserList( response.data );
});
--編集
子コンポーネントへのリストの渡し方が間違っているのでは?
const [users, setUserList] = useState<User[]>([]);
<UserList items={users} />
interface UserListProps {
items: User[];
};
const UserList: React.FC<UserListProps> = ({items}) => {
return (
<Fragment>
<ul>
{items.map(user => (
<li key={user.id}>
<span>{user.firstName}</span>
</li>
))}
</ul>
</Fragment>
);
};
関連
-
[解決済み] リアクトです。<tr>は<td>の子として表示できません。コメント > td > tr を参照してください。
-
[解決済み] Angular 2の*ngForのReactでの同等品
-
[解決済み] React - _this2.SetStateは関数ではありません。
-
[解決済み] react.jsで複数のモジュールをエクスポートする
-
[解決済み] validateDOMNesting警告React
-
[解決済み] Cross-envでyarnの実行時にenv変数が変更されない。
-
[解決済み] ESLintとTSLintの違い【クローズド】について
-
[解決済み] React NativeとReactの違いは何ですか?
-
[解決済み] TypeScriptでの取得と設定
-
[解決済み】TypeScriptのインターフェースと型について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ReactJS: Warning: setState(...): 既存の状態遷移の間に更新することはできません
-
[解決済み] React-Router 4 キャッチオールルート
-
[解決済み] React の open mailto E-Mail クライアントの onClick で textarea から本文を取得する。
-
[解決済み] Webpack のコンパイルに失敗した
-
[解決済み] ReactJS で inst.render が関数でないエラーが発生する
-
[解決済み] React Router - バージョン更新後のwithRouterでTypescriptエラーが発生する。
-
[解決済み] React QueryとReduxの主な違いは何ですか?
-
[解決済み] componentDidUpdate'メソッドはいつ使用するのですか?
-
[解決済み] React JSXのforEach()でHTMLが出力されない
-
[解決済み] オブジェクトの型は「不明」です typescript generics