如何使用 Typescript 以 React hook 形式一次设置多个值

Dra*_*era 21 typescript reactjs react-hook-form

我有以下界面:

export interface DataResponse {
  user_id: string;
  name: string;
  phone_number: string;
  country: string;
}
Run Code Online (Sandbox Code Playgroud)

它用作通过反应查询获取数据的类型。如果有数据,我正在使用 useEffect 填充字段:

useEffect(() => {
    if (userData) {
      Object.entries(userData).forEach(
        ([name, value]) => setValue(name, value));
    }
}, [setValue, userData]);
Run Code Online (Sandbox Code Playgroud)

userData 的类型是 DataResponse...当我用它设置值时,setState(name, value)它会在名称下划线并引发以下错误:

Argument of type 'string' is not assignable to parameter of type | "name" | "phone_number" | "country"
Run Code Online (Sandbox Code Playgroud)

kno*_*fel 33

我认为你可以在这里使用RHF的reset方法。

useEffect(() => {
    if (userData) {
      reset(userData);
    }
}, [userData, reset]);
Run Code Online (Sandbox Code Playgroud)

  • 我不确定我是否正确理解您的评论,但您可以将配置对象传递给“重置”。其中一个属性是“keepDefaultValues”,它可以防止覆盖默认值。您可以在[此处](https://react-hook-form.com/api/useform/reset/)阅读更多相关信息。 (4认同)
  • 重置方法的主要问题是,此后您将无法完全重置表单,因为传递给重置函数的对象将成为默认值 (3认同)