我有以下界面:
export interface DataResponse {
user_id: string;
name: string;
phone_number: string;
country: string;
}
它用作通過反應查詢獲取資料的型別。如果有資料,我將使用 useEffect 來填充欄位:
useEffect(() => {
if (userData) {
Object.entries(userData).forEach(
([name, value]) => setValue(name, value));
}
}, [setValue, userData]);
userData 的型別是 DataResponse... 當我用setState(name, value)它設定值時,會在 name 下劃線并拋出以下錯誤:
Argument of type 'string' is not assignable to parameter of type | "name" | "phone_number" | "country"
uj5u.com熱心網友回復:
我認為你可以在reset這里使用 RHF 的方法。
useEffect(() => {
if (userData) {
reset(userData);
}
}, [userData, reset]);
uj5u.com熱心網友回復:
第一:為什么要檢查userData,而不是使用userBillingData?
第二:因為我不知道是什么userBillingData,你可以使用:
useEffect(() => {
if (userData) {
Object.entries(userBillingData).forEach(
([name, value]: any) => setValue(name, value));
}
}, [setValue, userData]);
否則你將不得不轉換正確的型別。
TypeScript 中的 ES7 Object.entries() 不起作用
uj5u.com熱心網友回復:
在這種情況下,您可以使用 keyof:
useEffect(() => {
if (userData) {
Object.entries(userBillingData).forEach(
([name, value]) => setValue(name as keyof DataResponse, value));
}
}, [setValue, userData]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/377275.html
上一篇:輸入useReducer的狀態
