docs/docs/demoUsage/panels/code.md
在源码面板中,您可以完成低代码中的代码部分编写。
代码编辑面板允许您书写 JavaScript 代码,并支持 JSX 语法。 由于依赖了 Babel,所以书写的 JSX 和 Chrome 80+ 以后的新语法也会被自动编译:
| 编译前 | 编译后 |
|---|---|
注:因为编译结果会被
@babel/runtime干扰,目前面板不支持async await或{ ...arr }形态的语法编译。如果您需要此类编译,您可以考虑在读取 schema 中的originCode之后自己手动通过 babel 编译。
在代码中,您可以通过 window 来引用全局变量。资产包中的 packages 都是通过 UMD 方式引入的对应内容,如果您引入了 Fusion Next(Demo 中默认引入),那么可以通过此方法直接唤起 Fusion Next 的内容,如弹窗提示:
window.Next.Message.success('成功')
您可以在成员函数中访问到如下变量:
this.statethis.setStatethis.context.appHelper.utilsthis.context.appHelper.constantsthis.context.appHelper.requestHandlerMapthis.context.components| 源码面板中 | Schema 中 |
|---|---|
| 本地数据初始值设置: | |
| 生命周期方法: | |
| 自定义函数: | |
| 编译前全量代码: |
您可以在这里书写 CSS 内容。它对应 schema 中的 css 字段:
| 源码面板中 | Schema 中 |
|---|---|
如果您书写了视图相关的声明周期方法,那么对应的方法会在视图的特定周期被调用。支持的生命周期函数在《阿里巴巴中后台前端搭建协议规范》中被定义,包含:
{
componentDidMount(): void;
constructor(props: Record<string, any>, context: any);
render(): void;
componentDidUpdate(prevProps: Record<string, any>, prevState: Record<string, any>, snapshot: Record<string, any>): void;
componentWillUnmount(): void;
componentDidCatch(error: Error, info: any): void;
}
书写完了函数 / state 后,您可以在右侧的设置器面板中配置对代码的部分。
通常书写代码是为了对接低代码配置中的“变量绑定”、“事件回调”、“条件判断”和“循环”部分的。
{
"componentName": "NextBlockCell",
"id": "node_ockzmje8tf5",
"props": {
"bodyPadding": {
"type": "JSExpression",
"value": "this.state.text",
"mock": ""
}
}
}
{
"componentName": "Filter",
"id": "node_ockzmj0cl11w",
"props": {
"__events": {
"eventDataList": [
{
"type": "componentEvent",
"name": "onSearch",
"relatedEventName": "closeDialog"
}
]
},
"onSearch": {
"type": "JSFunction",
"value": "function(){this.onSearch.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
}
}
}
{
"componentName": "Filter",
"id": "node_ockzmj0cl11w",
"condition": {
"type": "JSExpression",
"value": "this.state.text",
"mock": true
}
}
{
"componentName": "Filter",
"id": "node_ockzmj0cl11w",
"loop": {
"type": "JSExpression",
"value": "this.state.text",
"mock": true
}
}