1.3.2 • Published 6 years ago

react-formit v1.3.2

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

react-formit

Super simple and super flexible React form.

$ yarn add react-formit

Usage

Bare minimum

import Formit from 'react-formit';

const App = () => (
  <Formit action="/">
    {({ onSubmit, setValue, getValue }) => (
      <form onSubmit={onSubmit}>
        <label htmlFor="username">Username:</label>
        <input
          type="text"
          id="username"
          onChange={e => setValue('username', e.target.value)}
          value={getValue('username')}
          required
        />
        <label htmlFor="password">Password:</label>
        <input
          type="password"
          id="password"
          onChange={e => setValue('password', e.target.value)}
          value={getValue('password')}
          required
        />
        <button type="submit">Submit</button>
      </form>
    )}
  </Formit>
);

render(<App />, document.getElementById('app'));

Full package

import Formit from 'react-formit';

const App = () => (
  <Formit
    action="/"
    method="POST" // default
    defaultFields={[
      { name: 'username', value: 'Stian' },
      { name: 'password', value: 'mightyPassword' }
    ]}
    credentials="same-origin"
    headers={[
      {
        Authorization:
          'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ'
      }
    ]}
    onValueSet={field => console.log(field.name, field.value)}
    beforeSubmit={fields =>
      window.confirm(
        `Are you sure you want your username to be ${
          fields.find(f => f.name === 'username').value
        }?`
      )
    }
    onSuccessfulSubmit={data =>
      console.log(
        data.method,
        data.action,
        data.credentials,
        data.headers,
        data.fields,
        data.response,
        data.responseData
      )
    }
    onFailedSubmit={data =>
      console.log(
        data.method,
        data.action,
        data.credentials,
        data.headers,
        data.fields,
        data.error
      )
    }
    responseAsJSON
    dontFlushFieldsOnSubmit
  >
    {({
      onSubmit,
      setFields,
      setValue,
      getValue,
      clearValues,
      isPosting,
      postingError,
      response,
      responseData
    }) => (
      <form onSubmit={onSubmit}>
        <label htmlFor="username">Username:</label>
        <input
          type="text"
          id="username"
          onChange={e => setValue('username', e.target.value)}
          value={getValue('username')}
          required
        />
        <label htmlFor="password">Password:</label>
        <input
          type="password"
          id="password"
          onChange={e => setValue('password', e.target.value)}
          value={getValue('password')}
          required
        />
        <label htmlFor="both">Set both:</label>
        <input
          type="text"
          id="both"
          onChange={e =>
            setFields([
              { name: 'username', value: e.target.value },
              { name: 'password', value: e.target.value }
            ])
          }
          value={getValue('username')}
          required
        />
        <button type="submit" disabled={isPosting}>
          {isPosting ? 'Submitting...' : 'Submit'}
        </button>
        <a onClick={clearValues}>Cancel</a>
        {responseData !== null && <p>{responseData.mySuccessMessage}</p>}
      </form>
    )}
  </Formit>
);

render(<App />, document.getElementById('app'));
1.3.2

6 years ago

1.3.1

6 years ago

1.3.0

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.0

6 years ago

1.0.0

6 years ago

0.2.5

6 years ago

0.2.4

6 years ago

0.2.3

6 years ago

0.2.2

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.0

6 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago