制服:创建自定义字段

时间:2018-08-08 18:18:40

标签: reactjs meteor semantic-ui meteor-autoform simple-schema

我定义了以下简单架构:

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的组件,可以查看/编辑此评论数组:

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(...)是一个调用Meteor后端函数的函数,该函数更新Mongo集合。

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

当前仅是一个单行字符串:Current ListField

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

1 个答案:

答案 0 :(得分:1)

看一下文档,您似乎可以指定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