alibaba / x-render

🚴‍♀️ 阿里 - 很易用的中后台「表单 / 表格 / 图表」解决方案
https://xrender.fun
7.05k stars 998 forks source link

升级到2.x之后,以前的schema不兼容了 #1183

Closed wangxinyu666666 closed 1 year ago

wangxinyu666666 commented 1 year ago

以前业务上schema如下: { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Feeds 策略配置", "type": "object", "widget": "StrategyEditor", "readOnlyWidget": "StrategyEditor", "props": {} } 在1.14.14版本中,上面的schema是可以正常渲染出表单的,但是升级到2.x版本后,就不能渲染了。辛苦看一下,因为这个已经上到正式环境了,我这没有太好的办法修改。

MoYuM commented 1 year ago

报的什么错

wangxinyu666666 commented 1 year ago

报的什么错

没有报错,就是没有渲染出来表单

MoYuM commented 1 year ago

本地环境下也没有报错么

wangxinyu666666 commented 1 year ago

本地环境下也没有报错么

没有报错,用的2.1.13-beta.2这个版本

lhbxs commented 1 year ago

你的 schema 贴出来看看

lhbxs commented 1 year ago

然后新老对比,截图看看

wangxinyu666666 commented 1 year ago

然后新老对比,截图看看

schema={ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Feeds 策略配置", "type": "object", "widget": "StrategyEditor", "readOnlyWidget": "StrategyEditor", "props": {} } 新版本:

image

旧版本:

image
lhbxs commented 1 year ago

把 type 改成 any 试试

wangxinyu666666 commented 1 year ago

把 type 改成 any 试试 右侧还是渲染不出来

image
lhbxs commented 1 year ago

你这个 左侧的 schema 是最顶层的 schema 吗?

wangxinyu666666 commented 1 year ago

你这个 左侧的 schema 是最顶层的 schema 吗?

是的

lhbxs commented 1 year ago

截图看下 的传参

wangxinyu666666 commented 1 year ago

截图看下 的传参

是哪里的传参?

lhbxs commented 1 year ago
截屏2023-04-23 下午3 30 21
wangxinyu666666 commented 1 year ago
截屏2023-04-23 下午3 30 21
image image
lhbxs commented 1 year ago

感觉哪里不对,标准 schema 格式 不应该是下面这样的吗?

{ type: 'object', properties: { "xxx": { title: '策略配置', type: 'any', ..... } };

wangxinyu666666 commented 1 year ago

感觉哪里不对,标准 schema 格式 不应该是下面这样的吗?

{ type: 'object', properties: { "xxx": { title: '策略配置', type: 'any', .....

},

};

我理解你说的标准模式,但是我上面的schema是想在根节点就渲染自定义组件,而且在1.14.14版本是可以正常渲染的,然后在新版本就渲染不出来。

lhbxs commented 1 year ago

你按照我说的套一层试试,看看

wangxinyu666666 commented 1 year ago

你按照我说的套一层试试,看看

套一层肯定是可以的,但是之前的schema已经上生产了,在套一层的话,values的格式就变了,会多一层,所以不能多套一层,多套一层会改很多东西,可不可以在formrender里改一下?formrender升级了按理也需要兼容之前的schema呀

lhbxs commented 1 year ago

我理解数据只是从 data => xxx.data 吧,至于 data 里面的格式并不会改变

lhbxs commented 1 year ago

还有一个就是,我有点没 get 到点,你这个是一个顶层 schema 然后顶层 schema 对应的是一个自定义组件?那 form-render 起到了什么作用?

wangxinyu666666 commented 1 year ago

我理解数据只是从 data => xxx.data 吧,至于 data 里面的格式并不会改变

是的,如果变成xxx.data,需要我这里改一下,以及客户那里的接口再改一下,而且需要兼容已有的数据。

wangxinyu666666 commented 1 year ago

还有一个就是,我有点没 get 到点,你这个是一个顶层 schema 然后顶层 schema 对应的是一个自定义组件?那 form-render 起到了什么作用?

我上面写的schema只是一种使用情况,其他大多数的使用情况都是按照你们的标准来的。我的点是在于,既然之前这种schema是可以正常渲染出来的,那么版本升级之后也得兼容之前的schema吧?

lhbxs commented 1 year ago

底层渲染器换了,你这种非标准好像不适用新的渲染器

wangxinyu666666 commented 1 year ago

底层渲染器换了,你这种非标准好像不适用新的渲染器

实在不行的话,那我改一下代码逻辑吧,这种根节点就是自定义组件的,就不使用formrender了。

lhbxs commented 1 year ago

恩,或者是判断一下是根组件这种情况,回填数据套一层、提交数据解套