制服:创建自定义字段

Uniforms: Creating custom field

我定义了以下简单模式:

import SimpleSchema from 'simpl-schema';

export const Comments = new Mongo.Collection("comments");

export const CommentsSchema = new SimpleSchema({
  comments: Array,
  "comments.$": Object,
  "comments.$.author": String
  "comments.$.text": String
})

我有一个 AutoForm 到 view/edit 这个评论数组的组件:

import {ErrorsField, SubmitField, ListField} from "uniforms-semantic";
import AutoForm from 'uniforms-semantic/AutoForm';

<AutoForm schema={CommentsSchema} onSubmit={comments => this.updateRequest(comments)} model={this.props.comments}>
  <ListField name={"comments"}/>
  <ErrorsField/>
  <SubmitField/>
</AutoForm>

this.updateRequest(...) 是调用更新 Mongo 集合的 Meteor 后端函数的函数。

我想自定义 ListField 以便对于每个评论 "comments.$.text" TextField 显示为允许换行的更大的文本框。

目前只是一行字符串:

我考虑过重写 ListField 的自定义版本,但对于像这样的小改动来说,这似乎不必要地复杂。使用制服添加像这样的小自定义的最佳方法是什么 API?

查看文档,您似乎可以指定 ListField 的内部工作原理。这是未经测试的,但我猜是这样的:

<ListField name="comments">
    <ListItemField name="$">
        <NestField name="">
            <TextField name="author" />
             <LongTextField name="text" />
        </NestField>
    </ListItemField>
</ListField>

https://github.com/vazco/uniforms/blob/master/INTRODUCTION.md#props-propagation