## Custom rendering component
Custom rendering components allow developers to render custom components.
```javascript
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import Schemaform from 'antd-schema-form';
import 'antd-schema-form/style/antd-schema-form.css';
const customComponent = {
/**
* Custom component
* @param { object } item: schema object
* @param { object } form: antd form object
* @param { boolean } required: whether the form value must exist
*/
custom({ item, form, required }) {
return ;
},
/**
* Custom component when type type is "object" or contains "oneOf" attribute
* @param { object } item: schema object
* @param { object } form: antd form object
* @param { React.ReactNodeArray || React.ReactNode } element: Rendered React component
*/
objectCustom({ item, form, element }) {
return
{ element }
;
},
// ...Other custom components
};
const schemaJson = {
id: '$root',
type: 'string',
title: 'Custom rendering component',
$componentType: 'custom' // Custom component key
};
ReactDOM.render(
,
document.getElementById('app')
);
```
SchemaForm's custom component property `customComponent` is of type `object`, when the `type` attribute is not `object`, the type of the value is `({ item, form, required }) => React.Node`.
Function parameters:
| Parameter | Description | Type |
| --- | --- | --- |
| item | Information about the id, title, etc. Json schema required by the current component. | object |
| form | Antd's form object. | object |
| required | Field required | boolean |
When the `type` attribute is `object`, the value type is `({ item, form, element }) => React.Node`.
| Parameter | Description | Type |
| --- | --- | --- |
| item | Information about the id, title, etc. Json schema required by the current component. | object |
| form | Antd's form object. | object |
| element | Rendered React component | React.ReactNodeArray || React.ReactNode |
## Custom table column rendering component
The custom table column rendering component allows developers to render custom components in the table's render function.
```javascript
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import Schemaform from 'antd-schema-form';
import 'antd-schema-form/style/antd-schema-form.css';
const customTableRender = {
// Custom component
custom({ text, record, index, root, form }) {
return { text };
},
// ...Other custom components
};
const schemaJson = {
id: '$root',
type: 'array',
title: 'Table column rendering component',
items: {
id: '$root/items',
type: 'object',
title: 'Table data',
properties: {
data: {
id: '$root/items/properties/data',
type: 'string',
title: 'Data',
$tableRender: 'custom' // Custom table column render component key
}
}
}
};
ReactDOM.render(
,
document.getElementById('app')
);
```
SchemaForm's custom table column rendering component property `customTableRender` type is `object`, Each of these values is of the type `(text, record, index, item, form) => React.Node`.
Function parameters:
| Parameter | Description | Type |
| --- | --- | --- |
| value | Currently rendered value. | any |
| record | Current column of data information. | object |
| index | Column index. | number |
| root | Information about json schema such as id and title. | object |
| form | Antd's form object. | object |