baidu / amis

前端低代码框架,通过 JSON 配置就能生成各种页面。
https://baidu.github.io/amis/
Apache License 2.0
17.43k stars 2.52k forks source link

关于我在amis项目如何使用JSON Schema自定义组件,仅供参考 #8856

Open TYBWANG opened 1 year ago

TYBWANG commented 1 year ago

实现场景:

自定义组件,并且可以通过编辑器编辑导出 JSON Schema

存在的问题:

官方提供的方案 "type": "custom" 和 JS SDK的方式都不是我想要的方案。作为开发者肯定是希望使用 JSON Schema 配置页面,同样使用 JSON Schema 配置组件并且通过 type: "my-custom" 来使用

我的方案:

1、使用可视化编辑器自定义一个组件导出JSON Schema,保存到 my-custom.json 2、引入React,使用class方式将my-custom.json当模版定义为React组件MyCustom 3、使用amis注册MyCustom为组件

import myCustomTpl from '/src/components/my-custom.json'

const React = amisRequire('react') const amisLib = amisRequire('amis')

class MyCustom extends React.Component { render() { return this.props.render('my-custom', myCustomTpl) } }

amisLib.Renderer({ type: 'my-custom', autoVar: true })(MyCustom)

4、使用自定义组件
{ ... "type": "my-custom", "data": "" } 使用很方便且灵活。整个项目只需在请求响应拦截器里写js代码,其他都是 JSON Schema文件

最后不清楚的可以看这里 : https://github.com/TYBWANG/tyb-amis-admin 感觉有帮助的可以点个star

personzhangjiazhen commented 2 months ago

能教教我怎么搞么?没看明白