Coder Social home page Coder Social logo

shirbr510 / react-final-form-arrays Goto Github PK

View Code? Open in Web Editor NEW

This project forked from final-form/react-final-form-arrays

0.0 3.0 0.0 545 KB

A component for rendering and editing arrays ๐Ÿ React Final Form

License: MIT License

JavaScript 93.78% TypeScript 6.22%

react-final-form-arrays's Introduction

๐Ÿ React Final Form Arrays

NPM Version NPM Downloads Build Status codecov.io styled with prettier


Installation

npm install --save react-final-form-arrays react-final-form final-form final-form-arrays

or

yarn add react-final-form-arrays react-final-form final-form final-form-arrays

Usage

๐Ÿ React Final Form Arrays provides a way to render arrays in ๐Ÿ React Final Form.

import { Form, Field } from 'react-final-form'
import arrayMutators from 'final-form-arrays'
import { FieldArray } from 'react-final-form-arrays'

const MyForm = () => (
  <Form
    onSubmit={onSubmit}
    mutators={{
      // potentially other mutators could be merged here
      ...arrayMutators
    }}
    validate={validate}
    render={({ handleSubmit, pristine, invalid }) => (
      <form onSubmit={handleSubmit}>
        <FieldArray name="customers">
          {({ fields }) => (
            <div>
              {fields.map((name, index) => (
                <div key={name}>
                  <div>
                    <label>First Name</label>
                    <Field name={`${name}.firstName`} component="input" />
                  </div>
                  <div>
                    <label>Last Name</label>
                    <Field name={`${name}.lastName`} component="input" />
                  </div>
                  <button type="button" onClick={() => fields.remove(index)}>
                    Remove
                  </button>
                </div>
              ))}
              <button
                type="button"
                onClick={() => fields.push({ firstName: '', lastName: '' })}
              >
                Add
              </button>
            </div>
          )}
        </FieldArray>
      </form>
    )}
  />
)

Table of Contents

Examples

Demostrates how to use <FieldArray/> to render an array of inputs, as well as use push, pop, and remove mutations.

Demostrates how to integrate the simple example with react-beautiful-dnd

Rendering

There are three ways to tell <FieldArray/> what to render:

Method How it is rendered
component prop return React.createElement(this.props.component, props)
render prop return this.props.render(props)
a render function as children return this.props.children(props)

API

The following can be imported from react-final-form-arrays.

FieldArray : React.ComponentType<FieldArrayProps>

A component that takes FieldArrayProps and renders an array of fields

version: string

The current used version of ๐Ÿ React Final Form Arrays.


Types

FieldArrayProps

These are props that you pass to <FieldArray/>. You must provide one of the ways to render: component, render, or children.

children?: ((props: FieldArrayRenderProps) => React.Node) | React.Node

A render function that is given FieldArrayRenderProps, as well as any non-API props passed into the <FieldArray/> component.

component?: React.ComponentType<FieldArrayRenderProps>

A component that is given FieldArrayRenderProps as props, as well as any non-API props passed into the <FieldArray/> component.

name: string

The name of your field array.

render?: (props: FieldArrayRenderProps) => React.Node

A render function that is given FieldArrayRenderProps, as well as any non-API props passed into the <FieldArray/> component.

isEqual?: (allPreviousValues: Array<any>, allNewValues: Array<any>) => boolean

A function that can be used to compare two arrays of values (before and after every change) and calculate pristine/dirty checks.

subscription?: FieldSubscription

A FieldSubscription that selects of all the items of FieldState that you wish to update for. If you don't pass a subscription prop, it defaults to all of FieldState.

validate?: (value: ?any[], allValues: Object) => ?any

A function that takes the field value, and all the values of the form and returns an error if the array value is invalid, or undefined if the value is valid.

FieldArrayRenderProps

These are the props that <FieldArray/> provides to your render function or component. This object is divided into a fields object that mimics an iterable (e.g. it has map() and forEach() and length), and meta data about the field array. Keep in mind that the values in meta are dependent on you having subscribed to them with the subscription prop

fields.forEach: (iterator: (name: string, index: number) => void) => void

Iterates through all of the names of the fields in the field array in bracket format, e.g. foo[0], foo[1], foo[2].

fields.insert: (index: number, value: any) => void

A function to insert a value into any arbitrary index of the array.

fields.map: (iterator: (name: string, index: number) => any) => any[]

Iterates through all of the names of the fields in the field array in bracket format, e.g. foo[0], foo[1], foo[2], and collects the results of the iterator function. You will use this in almost every implementation.

fields.move: (from: number, to: number) => void

A function to move a value from one index to another. Useful for drag-and-drop reordering.

fields.name: string

The name of the field array.

fields.pop: () => any

A function to remove a value from the end of the array. The value will be returned.

fields.push: (value: any) => void

A function to add a value to the end of the array.

fields.remove: (index: number) => any

A function to remove a value from an arbitrary index of the array.

fields.shift: () => any

A function to remove a value from the beginning of the array. The value will be returned.

fields.swap: (indexA: number, indexB: number) => void

A function to swap two values in the array.

fields.update: (index: number, value: any) => void

Updates a value of the specified index of the array field.

fields.unshift: (value: any) => void

A function to add a value to the beginning of the array.

meta.active?: boolean

See the ๐Ÿ Final Form docs on active.

meta.data: Object

See the ๐Ÿ Final Form docs on data.

meta.dirty?: boolean

See the ๐Ÿ Final Form docs on dirty.

meta.error?: any

See the ๐Ÿ Final Form docs on error.

meta.initial?: any

See the ๐Ÿ Final Form docs on initial.

meta.invalid?: boolean

See the ๐Ÿ Final Form docs on invalid.

meta.pristine?: boolean

See the ๐Ÿ Final Form docs on pristine.

meta.submitError?: any

See the ๐Ÿ Final Form docs on submitError.

meta.submitFailed?: boolean

See the ๐Ÿ Final Form docs on submitFailed.

meta.submitSucceeded?: boolean

See the ๐Ÿ Final Form docs on submitSucceeded.

meta.touched?: boolean

See the ๐Ÿ Final Form docs on touched.

meta.valid?: boolean

See the ๐Ÿ Final Form docs on valid.

meta.visited?: boolean

See the ๐Ÿ Final Form docs on visited.

react-final-form-arrays's People

Contributors

erikras avatar maciejmyslinski avatar michaeldeboey avatar ogg70 avatar petermikitsh avatar rosskevin avatar shirbr510 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.