useForm 
useForm return a FormInstance.
See also: Api Reference - Form Instance
Use with EzForm 
In some case, you may control form from outside of it. So you can use composable useForm to control the form.
You need to pass FormInstance, return from useForm, to EzForm. Then you can use FormInstance's methods to handle form.
Example
Click submit then check console tab in devtool.
View Code
<template>
	<EzForm :form="form" @submit="handleSubmit" @reset="handleReset">
		<EzFormItem label="Username" name="username">
			<input placeholder="Enter Username" />
		</EzFormItem>
		<EzFormItem label="Password" name="password">
			<input placeholder="Password" type="password" />
		</EzFormItem>
		<button type="button" @click="form.submit()">Submit</button>
		<button type="button" @click="form.reset()">Reset</button>
	</EzForm>
</template>
<script lang="ts" setup>
import { useForm } from "@niku/ez-form";
const form = useForm();
function handleSubmit(values: LoginRequest) {
	console.log(values); // {username: "tester", password: "123456"}
}
function handleReset() {
	console.log("Form reset");
}
</script>WARNING
Only use useForm this way when you want to access to form instance before component mount.
Multiple Form 
In some case, you may want to control multiple form inside <script>. You can do it with useForm and EzForm.
Firstly, you have to create form instances via useForm. Then, passing them into EzForm.
Example
Click submit then check console tab in devtool.
Click submit then check console tab in devtool.
View Code
<template>
	<div
		class="example-box"
		style="display: grid; grid-template-columns: repeat(2, 1fr)"
	>
		<div>
			<EzForm :form="form" @submit="handleSubmit" @reset="handleReset">
				<EzFormItem label="Username" name="username">
					<input placeholder="Enter Username" />
				</EzFormItem>
				<EzFormItem label="Password" name="password">
					<input placeholder="Password" type="password" />
				</EzFormItem>
				<div :style="{ display: 'flex', gap: '0.5rem' }">
					<button type="button" @click="form.submit()">Submit</button>
					<button type="button" @click="form.reset()">Reset</button>
				</div>
			</EzForm>
			<p>Click submit then check console tab in devtool.</p>
		</div>
		<div>
			<EzForm :form="form2" @submit="handleSubmit2" @reset="handleReset2">
				<EzFormItem label="Username" name="username">
					<input placeholder="Enter Username" />
				</EzFormItem>
				<EzFormItem label="Password" name="password">
					<input placeholder="Password" type="password" />
				</EzFormItem>
				<div :style="{ display: 'flex', gap: '0.5rem' }">
					<button type="button" @click="form2.submit()">Submit</button>
					<button type="button" @click="form2.reset()">Reset</button>
				</div>
			</EzForm>
			<p>Click submit then check console tab in devtool.</p>
		</div>
	</div>
</template>
<script lang="ts" setup>
import { EzForm, EzFormItem, useForm } from "../../src";
const form = useForm();
const form2 = useForm();
function handleSubmit(values) {
	console.log("Form 1 submit", values); // {username: "tester", password: "123456"}
}
function handleReset() {
	console.log("Form reset");
}
function handleSubmit2(values) {
	console.log("Form 2 submit", values); // {username: "tester", password: "123456"}
}
function handleReset2() {
	console.log("Form 2 reset");
}
</script>Standalone 
You can use useForm to handle form, without EzForm. But you can't controls multiple form without EzForm.
Example
Click submit then check console tab in devtool.
View Code
<template>
	<div class="example-box">
		<div class="ez-form">
			<EzFormItem label="Username" name="username">
				<input placeholder="Enter Username" />
			</EzFormItem>
			<EzFormItem label="Password" name="password">
				<input placeholder="Password" type="password" />
			</EzFormItem>
			<div :style="{ display: 'flex', gap: '0.5rem' }">
				<button type="button" @click="handleSubmit()">Submit</button>
				<button type="button" @click="handleReset()">Reset</button>
			</div>
		</div>
		<p>Click submit then check console tab in devtool.</p>
	</div>
</template>
<script lang="ts" setup>
const form = useForm();
function handleSubmit() {
	form.submit().then(({ values, errors }) => {
		if (!errors) {
			console.log("Form values", values);
		} else {
			console.log("Form errors", errors);
		}
	});
}
function handleReset() {
	form.reset();
	console.log("Form reset");
}
</script>
Ez Form