首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用react admin v4替换react final-form中的form.change

用react admin v4替换react final-form中的form.change
EN

Stack Overflow用户
提问于 2022-07-11 21:04:16
回答 1查看 87关注 0票数 0

我有这个组件为react v3制作,它允许我生成一个id代码。现在我正在升级到react的第4版,我不知道如何替换代码的一部分。

form.change("referredCode", code);

以下是组件的完整代码。

代码语言:javascript
复制
import React, { useEffect, useState } from "react";
import { TextInput, useDataProvider, LoadingIndicator } from "react-admin";
import { useForm } from "react-final-form";
import { randomIdGenerator } from "../../helpers/randomIdGenerator";

export default function UserReferredCode({ record }) {
  const { referredCode } = record;
  const [code, setCode] = useState("");
  const [isLoading, setIsLoading] = useState(false);
  const dataProvider = useDataProvider();
  const form = useForm();

  useEffect(() => {
    if (!referredCode) {
      // Generar id aleatorio
      setIsLoading(true);
      setCode(randomIdGenerator(6));
    }
  }, []);

  useEffect(() => {
    if (code) {
      dataProvider
        .getList("users", {
          pagination: { page: 1, perPage: 1 },
          filter: { referredCode: code },
        })
        .then(({ data }) => {
          if (data.length > 0) {
            setCode(randomIdGenerator(6));
          } else {
            setIsLoading(false);
          }
        })
        .catch((e) => {
          setIsLoading(false);
          console.log(e);
        });
    }

    form.change("referredCode", code);
  }, [code]);

  return (
    <>
      {isLoading ? (
        <LoadingIndicator />
      ) : (
        <TextInput
          disabled
          source="referredCode"
          name="referredCode"
          type="text"
          placeholder="Code"
          initialValue={referredCode || code}
        />
      )}
    </>
  );
}
EN

回答 1

Stack Overflow用户

发布于 2022-07-18 12:23:13

您应该有一个Form组件来包装所有这些。

检查Form文档https://marmelab.com/react-admin/doc/4.0/Form.html

然后您可以从useFormContext() (从react form)访问它。

表单具有接受名称和值的操作setValue

https://react-hook-form.com/api/useform/setvalue

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72944665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档