alibaba / formily

📱🚀 🧩 Cross Device & High Performance Normal Form/Dynamic(JSON Schema) Form/Form Builder -- Support React/React Native/Vue 2/Vue 3
https://formilyjs.org/
MIT License
11.32k stars 1.48k forks source link

[Feature Request] formily/antd下的array类型的组件能否支持field直接传入component的模式 #2849

Closed abchexuzheng closed 2 years ago

abchexuzheng commented 2 years ago

What problem does this feature solve?

我想通过直接传入组件的方式使用array类型的组件的时候,会报类型判断错误,查看代码发现,array-items等组件在判断addition等组件的时候会做schema['x-component']?.indexOf('Addition') > -1,这个判断导致x-component只能是字符串,不能直接传入reactElement了,这个能不能加一个判断reactElement的组件名的逻辑,让传入reactElement的场景页可以使用

What does the proposed API look like?

const isAdditionComponent = (schema: ISchema) => { //这个代码加上判断schema['x-componet'].name等逻辑 return schema['x-component']?.indexOf('Addition') > -1 } 像这种的 import { ISchema } from "@formily/react";

export function isArrayComponent(schema: ISchema, componentName: string): boolean { const xcomponent = schema['x-component']; if (!xcomponent) { return false; } if (typeof xcomponent === 'string') { return xcomponent.indexOf(componentName) > -1 } else if (xcomponent['name']) { return xcomponent['name'].indexOf(componentName) > -1 } else if (xcomponent.render && xcomponent.render.name) { return xcomponent.render.name.indexOf(componentName) > -1 } return false; }

janryWang commented 2 years ago

不考虑支持这种场景,最佳实践是基于字符串来控制