Пользовательский интерфейс в форме react jsonschema для ArrayFieldTemplate

#reactjs #jsonschema #react-jsonschema-forms

Вопрос:

Я использую react jsonschema form в своем приложении и обрабатываю массив в ответе / запросе. То, что я сделал, — это использовал свой пользовательский интерфейс вместо использования {element.children} , который с помощью какой-то магии создает html и имеет все доступные реквизиты. Ниже приведен мой код

     ArrayFieldTemplate = (props) => {
    console.log('ArrayfieldTemplate', props);
    let span = 2;
    props.items.map(element => (
        console.log('ArrayfieldTemplate element children', element.children.props.formData.Notes)            
        ));

    return (

        <div className={props.className} style={{ "display": "block" }}>               
            <Table responsive striped>                   
                <tbody>
            {                   
                props.items amp;amp;
                        props.items.map(element => (
                       
                        <tr key={element.index}>
                                <td>
                                    <input
                                        type="text"
                                        id={element.children.props.idSchema.UserNotes.$id}
                                        value={element.children.props.formData.UserNotes}
                                        onChange={this.handleChange}
                                    />
                                    {/*{element.children}*/}
                                </td>
                            <td className="align-text-bottom" style={{ verticalAlign:"bottom", textAlign:"left" }}>
                                <Button bsStyle="danger" className={"btn-xs"}
                                    onClick={(event) => { this.dropElement(event, element, element.index); }}
                                    >Delete</Button>
                                   
                               
                            </td>                                
                        </tr>
                                    
                                              
                ))
            }
                </tbody>
            </Table>

            {props.canAdd amp;amp; (
                <div>
                    <p className=" array-item-add">
                        <Button bsStyle="success" onClick={props.onAddClick}>
                            Add
                        </Button>
                    </p>
                </div>
            )}
        </div>
    );
}
 

Я хочу показать input type="text" и button внутри стола. В массиве также есть несколько других полей {element.children.props.formData} , которые я удалил для краткости.
Теперь, когда загружается первая страница UserNotes , в базе данных ее нет, поэтому я вижу пустое текстовое поле, но когда я что-то ввожу и нажимаю на submit этот массив, он все еще пуст, когда запрос поступает в серверную часть.

Я использую react with typescript .

Ниже приведен код формы

     return (
            <div>
                <Form id={"form"} schema={this.state.schema}
                    formData={this.state.data}
                    uiSchema={uiSchema}
                    onChange={() => { }}
                    onError={this.onError}
                    ArrayFieldTemplate={this.ArrayFieldTemplate} 
                    FieldTemplate={this.CustomFieldTemplate}
                    onSubmit={this.setSettingData}
                    validate={this.validate}
                    liveValidate={false}
                    showErrorList={false}
                    widgets={this.widgets}
                    fields={this.fields}
                    noHtml5Validate={true}
                />
            </div>
        );
 

Я не смог найти ни одного примера, где пользовательский интерфейс используется с ArrayFieldTemplate в форме react jsonschema. Кто-нибудь может мне помочь, пожалуйста? Не могу заменить форму react jsonschema, потому что этот код уже используется в производстве. Я просто пытаюсь добавить табличку ArrayFieldTemplate с пользовательским пользовательским интерфейсом.