【问题标题】:React Formik Load data from apiReact Formik 从 api 加载数据
【发布时间】:2020-07-24 05:50:35
【问题描述】:

我是 React 新手,我检查了这个例子 https://stackblitz.com/edit/react-formik-master-details-crud-example?file=users%2FAddEdit.jsx

但如果我在 Formik 中使用“useEffect”,我会收到错误消息,但它在实时示例中有效

错误信息 React Hook "useState" 不能在回调中调用。 React Hooks 必须在 React 函数组件或自定义 React Hook 函数中调用

return (
    <Formik initialValues={initialValues} validationSchema={validationSchema} onSubmit={onSubmit}
    >
      {({ errors, touched, isSubmitting, setFieldValue }) => {
        const [user, setUser] = useState({});
        useEffect(() => {
          if (!isAddMode) {
            // get user and set form fields
            userService.getById(id).then(user => {
              const fields = ["title","firstName","lastName","email","role"];
              fields.forEach(field => setFieldValue(field, user[field], false));
              setUser(user);
            });
          }
        }, []);
        return (
          <Form>
            <h1>{isAddMode ? "Add User" : "Edit User"}</h1>
            <div className="form-row">
                <div className="form-group col-5">
                <label>First Name</label>
                <Field name="firstName" type="text" className={ "form-control" + (errors.firstName && touched.firstName ? " is-invalid" : "")                 }
                />
                <ErrorMessage name="firstName" component="div" className="invalid-feedback" />
              </div>
            </div>
         <Form>
        )
        }}
    </Formik>
  );

感谢您的解决方案

【问题讨论】:

标签: reactjs formik


【解决方案1】:

要使用钩子,你必须使用功能组件我认为你的主要组件是类组件,这就是它给出错误的原因

【讨论】:

  • 我是新来的反应,你能指导我在哪里制造错误 -stackblitz.com/edit/react-formik-demo?file=users%2FAddEdit.jsx。这段代码在 stackblitz 中工作。但是如果我在本地机器上运行它会抛出错误消息
  • 我已经检查了你的代码框链接,你能告诉我你遇到问题的组件的名称吗?
  • 是的,它可以实时工作(codesandbox 和 stackblitz),但是如果我在本地机器上运行相同的代码,那么我会收到错误 - >“无法在回调中调用 React Hook “useState”。React Hooks必须在 React 函数组件或自定义 React Hook 函数中调用”(这是我的主要问题)
  • 是的,我已经导出codesandbox代码并检查,它不工作
猜你喜欢
  • 2023-03-13
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-05
  • 1970-01-01
相关资源
最近更新 更多