Skip to content

React Pro Components Compatibility

The compatibility baseline is @ant-design/pro-components@2.8.10. The goal is a near-complete Vue 3 mapping of the core types and workflows, not React runtime compatibility.

Status: supported, Vue mapping, initial boundary.

Core mapping

React APIVue APIStatusNotes
columnscolumnssupportedShared by all three components
request(params, sort, filter)Same Promise contractsupportedReturns { data, total?, success? }
actionRefComponent refVue mappingSimilar instance method names
formRef / editableFormRefComponent refVue mappingReact ref props are not retained
value / onChangev-modelVue mappingStandard update:* events
editableKeysv-model:editable-keysVue mappingShared single/multiple edit state
ReactNode propsNamed slots / render callbacksVue mappingTemplates first, callbacks when reusable
onRequestErrorrequest-errorVue mappingExisting rows are preserved

Search collapse

ProTable.search keeps the core React semantics:

OptionBehavior
defaultCollapsedInitializes uncontrolled collapse state only
collapsedControlled state; the parent updates it
spanSearch item grid span; defaults to 8, or three fields per row
labelWidthNumbers are pixels; auto keeps intrinsic sizing
searchText / resetTextSearch and reset labels
onCollapse(next)Collapse-state callback

Vue also emits search-collapse:

vue
<ProTable :search="{ collapsed, span: 8 }" @search-collapse="collapsed = $event" />

Collapsed mode renders the first row only. The expand/collapse control appears only when more fields exist.

Named slots

Column slot names use column.key first and dataIndex otherwise. Array paths are dot-joined, so ['profile', 'name'] becomes profile.name.

ComponentSlotSlot props
ProTabletoolbar-title, toolbar-actionsToolbar content
ProTableheader-${columnKey}{ column }
ProTablecell-${columnKey} or ${columnKey}{ value, record, index, column, editable }
SchemaFormfield-${path}, ${path}, or the column key{ value, record, column, dependencies, update }
SchemaFormlabel-${path}{ column, record }
SchemaFormsubmitter{ values, current }

Other slots not consumed by ProTable are forwarded to the underlying Antdv Next Table.

valueType support

CategoryTypesProTable / EditableProTableSchemaForm
Texttext, textarea, passwordInput, Textarea, Password search/edit controls and formatted displayInput, Textarea, Password
Numericdigit, money, percent, sliderNumeric search and inline InputNumber / SliderInputNumber, Slider, and money/percent affordances
Choicesselect, treeSelect, radio, segmentedChoice search/edit controls with valueEnumSelect, TreeSelect, Radio, and Segmented
Statecheckbox, switchInline Checkbox / SwitchCheckbox(Group) / Switch
Date/timedate, dateTime, dateRange, dateTimeRange, time, timeRangeMatching date/time controls and formatted displayMatching date/time controls
Tableindex, indexBorder, optionIndex and action columnsNo field generated
Compositiongroup, formList, formSet, divider, dependencyNo data column generatedGroups, dynamic lists, sets, dividers, and dependencies

ProTable capabilities

CapabilityStatusNotes
Local/remote data, search, pagination, sort, filterssupportedLast request wins
Column visibility, order, fixed state, persistencesupportedThe built-in panel controls visibility only; programmatic columnsState controls and persists order / fixed
Reload, density, fullscreen, row selectionsupportedOptions, events, and instance API
Polling, focus revalidation, manual initial requestsupportedpolling / revalidateOnFocus / manualRequest
Single, multiple, creator, and tree editingsupportedShared with EditableProTable
React-only DOM and portal propsnot portedUse Vue slots and Antdv Next props

EditableProTable mapping

React APIVue APIStatus
valuev-model:valueVue mapping
controlledStandard v-model semanticsVue mapping
editableKeysv-model:editable-keysVue mapping
recordCreatorPropsrecord, position, parentKey, newRecordType, creatorButtonTextsupported
maxLengthmaxLengthsupported
onValuesChangeSame prop or values-change eventVue mapping
onTableChangeSame prop or table-change eventVue mapping
editableFormRefComponent refVue mapping

value is the only controlled whole-table data entry point; a conflicting dataSource prop is intentionally not exposed.

SchemaForm mapping

React SchemaFormVue SchemaFormStatus
columnscolumnssupported
layoutTypelayoutTypesupported
Form / EmbedSame layoutssupported
ModalForm / DrawerFormSame layouts + v-model:openVue mapping
QueryFilter / LightFilterSame layoutssupported
StepForm / StepsFormSame layouts + v-model:currentVue mapping
group / formList / formSetSame valueType valuessupported
dependencydependencies plus a dependency columnsupported

urlSync is a Vue-side extension. true writes fields into query parameters, { key: 'filters' } stores the complete model as JSON in one parameter, and { mode: 'hash' } targets the hash. Browser history navigation hydrates the form again.

Regular fields share the ProFormFields core with ProTable search/edit controls. SchemaForm customization precedence is field slot → renderFormItemcolumn.component → default valueType control, preserving all three extension points.

ProFormFields mapping

The 19 standalone fields use template-friendly named exports such as ProFormText, ProFormSelect, ProFormTreeSelect, and ProFormUploadButton. The default fieldMode="form-item" creates a FormItem; fieldMode="field" renders only the bare control for table cells or layouts that already own a FormItem.

React compound nameRecommended Vue template nameRelationship
ProFormText.PasswordProFormTextPasswordBoth reference the same component
ProFormRadio.GroupProFormRadioGroupBoth reference the same component

Every field exposes standard v-model. The shared core bridges single Checkbox/Switch checked, Upload fileList, and other controls' value contracts to modelValue. Select, TreeSelect, Checkbox Group, RadioGroup, and Segmented share the options / valueEnum / request protocol.

Captcha does not read a phone number or send codes on its own, while UploadButton and UploadDragger do not provide an upload server. These components are not mapped to valueType; applications must provide the captcha callback and upload action / customRequest backend contract.

Component refs

ComponentMethods
ProTablereload, reset, setPageInfo, clearSelected, fullScreen, scrollTo, startEditable, saveEditable, cancelEditable, addEditRecord
EditableProTableProTable methods + getRowData, getRowsData, setRowData
SchemaFormvalidate, reset, getFieldsValue, setFieldsValue, submit, open, close, next, prev

Project release convention

Changesets and GitHub Actions are project conventions, not React APIs. Describe npm-facing changes with pnpm changeset. Successful CI on main maintains the version PR; npm publishing only runs when NPM_TOKEN exists, with provenance enabled.

Explicitly out of scope

The initial release does not include ProLayout, ProCard, ProList, or ProDescriptions and does not depend on a request library. The network boundary is the generic Promise request callback.

Released under the MIT License