reactjs - Formik:如何从数组设置初始值?

标签 reactjs formik

我有客户对象,其中有一系列与之关联的信用卡,如下所示:

{
  "_id":"5d63e3a32f093f2b5e41ef96", 
  "firstName": <firstName>,
  "lastName": <lastName>,
  "email": <email>,
  "createdAt":"2019-08-26T13:50:27.409Z",
  "modifiedAt":"2019-09-14T20:10:00.257Z",
  "paymentMethods":[{
    "name": <name>, 
    "last4": <last4>, 
    "expirationDate": <expDate>,
    "isDefault":false,
    "token": <token>
  }, {
    "name": <name>, 
    "last4": <last4>, 
    "expirationDate": <expDate>,
    "isDefault":false,
    "token": <token>
  }, {
    "name": <name>, 
    "last4": <last4>, 
    "expirationDate": <expDate>,
    "isDefault":false,
    "token": <token>
  }
}

我想在 formik 中设置初始值。像这样:
const INITIAL_VALUES = {
  firstName: customer.firstName,
  lastName: customer.lastName,
  email: customer.email,
  phoneNumber: customer.phone,
  paymentMethods: ???????
};

我希望能够编辑付款方式信息。我可以绘制表单,以便所有字段都出现正确的次数,但是如何使用 formik 设置初始值?

谢谢!

最佳答案

您正确指定了初始值:<Formik initialValues={INITIAL_VALUES} /> .然后当你在 <Formik /> 中渲染表单时,您可以访问和呈现 paymentMethods喜欢:

formikProps.values.paymentMethods.map((method, index) => (
  <div key={index}>
    <input
      name={`paymentMethods.${index}.name`}
      value={method.name}
      onChange={formikProps.handleChange}
    />
    {/* Render other fields for each paymentMethod*/}
  </div>
))

您还可以使用 FieldArray 来呈现对象数组 ( https://jaredpalmer.com/formik/docs/api/fieldarray )

关于reactjs - Formik:如何从数组设置初始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57940356/

相关文章:

reactjs - 当我更改主组件中的 Prop 时,为什么我的 Prop 没有转到子组件?

reactjs - 如何处理在 React Native 中动态创建的多个 textInput 状态

javascript - 如何使用 SWR 改变具有嵌套数组的复杂对象?

javascript - 如何动态获取状态数组名称 React

reactjs - 警告 : isInitialValid has been deprecated and will be removed in future versions of Formik

typescript - 将类型断言与解构赋值结合使用的最佳方式是什么?

javascript - Draft.js和stateToHTML,如何在react组件中渲染输出html?

javascript - 如果字段不为空,请勿在提交时验证 Formik 和 Yup 中未触及的字段

reactjs - 使用 Formik : Objects are not valid as a React child 处理 React 中的错误

javascript - formik 警告,组件正在更改要控制的文本类型的不受控制的输入