如何使用 Typescript 以 React Hook 形式一次设置多个值
How to set multiple values at once in react hook form using Typescript
我有以下界面:
export interface DataResponse {
user_id: string;
name: string;
phone_number: string;
country: string;
}
用作使用 React 查询获取数据的类型。
如果有数据,我正在使用 useEffect 填充字段:
useEffect(() => {
if (userData) {
Object.entries(userData).forEach(
([name, value]) => setValue(name, value));
}
}, [setValue, userData]);
userData 的类型是 DataResponse...当我用 setState(name, value)
设置值时,它会在名称下划线并抛出以下错误:
Argument of type 'string' is not assignable to parameter of type | "name" | "phone_number" | "country"
首先:为什么要检查 userData
,而不是使用 userBillingData
?
第二:因为我不知道userBillingData
是什么,你可以使用:
useEffect(() => {
if (userData) {
Object.entries(userBillingData).forEach(
([name, value]: any) => setValue(name, value));
}
}, [setValue, userData]);
否则你将不得不转换正确的类型。
在这种情况下你可以使用 keyof:
useEffect(() => {
if (userData) {
Object.entries(userBillingData).forEach(
([name, value]) => setValue(name as keyof DataResponse, value));
}
}, [setValue, userData]);
我想你可以在这里使用 RHF 的 reset
方法。
useEffect(() => {
if (userData) {
reset(userData);
}
}, [userData, reset]);
我有以下界面:
export interface DataResponse {
user_id: string;
name: string;
phone_number: string;
country: string;
}
用作使用 React 查询获取数据的类型。 如果有数据,我正在使用 useEffect 填充字段:
useEffect(() => {
if (userData) {
Object.entries(userData).forEach(
([name, value]) => setValue(name, value));
}
}, [setValue, userData]);
userData 的类型是 DataResponse...当我用 setState(name, value)
设置值时,它会在名称下划线并抛出以下错误:
Argument of type 'string' is not assignable to parameter of type | "name" | "phone_number" | "country"
首先:为什么要检查 userData
,而不是使用 userBillingData
?
第二:因为我不知道userBillingData
是什么,你可以使用:
useEffect(() => {
if (userData) {
Object.entries(userBillingData).forEach(
([name, value]: any) => setValue(name, value));
}
}, [setValue, userData]);
否则你将不得不转换正确的类型。
在这种情况下你可以使用 keyof:
useEffect(() => {
if (userData) {
Object.entries(userBillingData).forEach(
([name, value]) => setValue(name as keyof DataResponse, value));
}
}, [setValue, userData]);
我想你可以在这里使用 RHF 的 reset
方法。
useEffect(() => {
if (userData) {
reset(userData);
}
}, [userData, reset]);