Field arrays

Felte supports creating fields from arrays by adding an index to its name. There's a few things to consider when working with field arrays:

createForm also returns some helpers to manage field arrays:

Using field arrays would look something like this:

import { Index } from 'solid-js/web';
import { createForm } from '@felte/solid';

function Form() {
  const { form, data, addField, unsetField } = createForm({
    initialValues: {
      interests: [{ value: '' }],
    },
  });

  const interests = () => data('interests');

  function removeInterest(index) {
    return () => unsetField(`interests.${index}`);
  }

  function addInterest(index) {
    return () => addField(`interests`, { value: '' }, index);
  }

  return (
    <form use:form>
      <Index each={interests()}>
        {(_, index) => (
          <div>
            <input name={`interests.${index}.value`} />
            <button type="button" onClick={addInterest(index + 1)}>
              Add Interest
            </button>
            <button type="button" onClick={removeInterest(index)}>
              Remove Interest
            </button>
          </div>
        })
      </Index>
    </form>
  );
}