id: arrays title: Arrays 和嵌套 Objects

custom_edit_url: https://github.com/jaredpalmer/formik/edit/master/docs/guides/arrays.md

Formik 支持嵌套对象和开箱即用的数组。这两个主题有些相关,因为它们都使用相同的语法。

嵌套对象

Formik 中的name props 可以使用类似 lodash 的点路径,来引用嵌套的 Formik 值。这意味着您不再需要压平表单的值。

  1. import React from 'react';
  2. import {Formik, Form, Field} from 'formik';
  3. export const NestedExample = () => (
  4. <div>
  5. <h1>Social Profiles</h1>
  6. <Formik
  7. initialValues={{
  8. social: {
  9. facebook: '',
  10. twitter: ''
  11. }
  12. }}
  13. onSubmit={values => {
  14. // same shape as initial values
  15. console.log(values);
  16. }}
  17. >
  18. <Field name="social.facebook" />
  19. <Field name="social.twitter" />
  20. <button type="submit">Submit</button>
  21. </Formik>
  22. </div>
  23. );

数组

Formik 还支持开箱即用的数组和对象数组。使用类似 lodash 的括号语法name字符串,您可以快速为列表中的项目构建字段。

  1. import React from 'react';
  2. import {Formik, Form, Field} from 'formik';
  3. export const BasicArrayExample = () => (
  4. <div>
  5. <h1>Friends</h1>
  6. <Formik
  7. initialValues={{
  8. friends: ['jared', 'ian']
  9. }}
  10. onSubmit={values => {
  11. // same shape as initial values
  12. console.log(values);
  13. }}
  14. >
  15. <Field name="friends[0]" />
  16. <Field name="friends[1]" />
  17. <button type="submit">Submit</button>
  18. </Formik>
  19. </div>
  20. );

有关在列表中操作(添加/删除/ 更多)items 的更多信息,请参阅<FieldArray>组件的 API 参考部分。