0.4.2 • Published 4 years ago

@treesoft/vue3-hook-form v0.4.2

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

Easy way to handle submit and validate form. No state, No two way binding or v-model in the component, just give the attribute name on the input elements. Vue 3 hook form is simpler and faster.

Install

npm i @treesoft/vue3-hook-form

Usage basic

<template>
    <form @submit="handleSubmit($event, onSubmit)">
        <input name="name">
        <textarea name="address">
        <button type="submit">Submit</button>
    </form>
</template>

<script>
import useForm from '@treesoft/vue3-hook-form'

export default {
    setup() {
        const { handleSubmit } = useForm()

        const onSubmit = (data) => {
            console.log(data) // { name: '', address: '' }
        }

        return {
            handleSubmit,
            onSubmit,
        }
    }
}
</script>

APIs methods

NameParamsDescription
setValue(name: string, value: string)set element value such as: input, textarea, select, etc.
nameattributes name value of element.
valuevalue to be change.
handleSubmit(event: object, callback: function)hanler function when form is submitted.
eventeventListener interface represents an object that can handle .an event dispatched by an EventTarget object.
callbackcallback function when the form was submitedd.
values: objectform state values, can be render in the template.
errors: objecterror state, can be render in the template.

APIs options

NameParamsDescription
useForm(options: object)options
options.defaultValue: objectform values to set by default
options.validate: objectform validation such as: email, password and ect.

Set form value after called service api

setup() {
    const { setValue, handleSubmit } = useForm()

    const onSubmit = (data) => console.log(data)

    // call to service api to get user info
    axios.get('https://api.fake.com/me').then(({ status, data }) => {
        const { name, address } = data
        if(status === 200) {
            // then set form value
            setValue('name', name)
            setValue('address', address)
        }
    })

    return {
        handleSubmit,
        onSubmit,
    }
}

Set form value by default

setup() {
    const options = {
        defaultValues: {
            name: 'Facebook',
            address: '1 Hacker Way, Menlo Park, 94025',
        }
    }
    
    const { formState, handleSubmit } = useForm(options)

    const onSubmit = (data) => {
        console.log(data)
    }

    return {
        formState,
        handleSubmit,
        onSubmit,
    }
}

Validation form

setup() {
    const options = {
        validate: {
            email: {
                required,
            },
            password: {
                minLength: minLength(8)
            }
        },
    }

    const { errors, handleSubmit } = useForm(options)

    const onSubmit = (data) => {
        console.log(data)
    }

    return {
        errors,
        handleSubmit,
        onSubmit,
    }
}

Web development in 2020 is very interesting and the hook form is trending now on react but not for vue now.

So, I have created the @treesoft/vue3-hook-form to make the component clean up and strongly code structure. No state, No two way binding or v-model but only one for onSubmit callback function. If you want to contribution with us don't be hesitate, create the pull request on Github to make vue comunnity stronger 🚀🚀🚀

0.4.1

4 years ago

0.4.0

4 years ago

0.4.2

4 years ago

0.3.7

4 years ago

0.3.6

4 years ago

0.3.5

4 years ago

0.3.4

4 years ago

0.3.3

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.3.0

4 years ago

0.2.9

4 years ago

0.2.8

4 years ago

0.2.7

4 years ago

0.2.6

4 years ago

0.2.5

4 years ago

0.2.3

4 years ago

0.2.4

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.2.2

4 years ago

0.1.0

4 years ago