Code Monkey home page Code Monkey logo

Comments (2)

HormCodes avatar HormCodes commented on September 28, 2024

Příklad pro oddělení logiky formuláře:

// Covered by unit tests
function validateNewsletterForm(values) {
  return {
    // ... email errors
  }
}

function useNewsletterForm({ onSubmit }) {
  const form = useFormik({
    initialValues: { email: '' },
    onSubmit,
    validate: validateNewsletterForm,
  })

  return {
    values: form.values,
    errors: form.errors,
    // ...
    handlers: {
      emailChange: (event: React.ChangeEvent<HTMLInputElement>) => {
        form.setFieldValue('email', event.target.value)
        // ... validations, etc.
      },
      handleSubmit: form.handleSubmit,
      // ...
    },
  }
}

Jedná se o příklad. Dané je, že je nutné zanořit stavy a jejich mutace. Nejsem si ale jist, zda zanořit celou logiku formu tedy i implementaci onSubmit (nebo třeba validate, ale v tomto případě mám spíše jasno a jsem pro zanoření). Cíl je částečně oddělit logiku (a stavy) od view a redukovat množství míst s logikou, např:

const form = useNewsletterForm({
    onSubmit: () => {
      console.log('Hello World')
    },
  })

  return (
    <form>
      <input value={form.values} onChange={form.handlers.emailChange} />
    </form>
  )

  // vs...

  const formik = useFormik({
    onSubmit: () => {
      console.log('Hello World')
    },
  })

  return (
    <form>
      <input
        value={formik.values.email}
        onChange={(event) => {
          formik.setFieldValue('email', event.target.value)
          // ...
        }}
      />
    </form>
  )

from app.

maral avatar maral commented on September 28, 2024

Vezmu si to. Docela mě to chytlo, i když jedu hrozně pomalu, jak ty technologie neznám.

A asi bych to připravil bez samotného volání API, protože to ještě není hotové.

from app.

Related Issues (20)

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.