真实场景:为 Solidity 智能合约函数输入参数。
这个例子模拟了 Web3 应用中常见的场景:用户需要为智能合约函数提供参数。该场景完美展示了:
function transferBatch(
address[] memory recipients,
uint256[] memory amounts,
struct Metadata {
string memo,
uint8 priority,
uint256 deadline
} memory metadata
) externalconst form = useFormState({
fields: {
'recipients': {
defaultValue: [''],
validator: Validators.required('至少需要一个接收者')
},
'metadata.memo': {
defaultValue: '',
validator: Validators.maxLength(100, '不能超过100字符')
}
}
});
// 动态数组字段
<FieldArray name="recipients" formState={form}>
{#snippet children({ fields, append, remove })}
{#each fields as field, index (field.key)}
<FormField name={`recipients[${index}]`} formState={form}>
...
</FormField>
{/each}
<button onclick={() => append('')}>添加</button>
{/snippet}
</FieldArray>{
"recipients": [
""
],
"amounts": [
""
],
"metadata": {
"memo": "",
"priority": 1,
"deadline": ""
}
}{}