網站首頁 編程語言 正文
前言
之前介紹了lowcode-engine引擎的自定義物料。在具體實際開發過程中,雖然官方提供了許多設置器,但可能滿足不了我們的需要,需要我們自定義設置器。
官方腳手架設置器開發
設置器主要用于低代碼組件屬性值的設置,顧名思義叫"設置器",又稱為 Setter。由于組件的屬性有各種類型,需要有與之對應的設置器支持,每一個設置器對應一個值的類型。
項目初始化
- lowcode官方給我們提供了腳手架,我們通過腳手架可以快速創建
npm init @alilc/element lowcode-app-material // lowcode-app-material項目名稱
- 我們選擇物料【組件設置器(setter)】類型。確認
- 安裝依賴,啟動調試環境
npm & yarn install
安裝好依賴之后,就可以啟動開發環境
yarn dev
開發自己的設置器
import * as React from "react"; import { Input } from "@alifd/next"; import "./index.scss"; interface AltStringSetterProps { // 當前值 value: string; // 默認值 initialValue: string; // setter 唯一輸出 onChange: (val: string) => void; // AltStringSetter 特殊配置 placeholder: string; } export default class AltStringSetter extends React.PureComponent<AltStringSetterProps> { componentDidMount() { const { onChange, value, defaultValue } = this.props; if (value == undefined && defaultValue) { onChange(defaultValue); } } // 聲明 Setter 的 title static displayName = 'AltStringSetter'; render() { const { onChange, value, placeholder } = this.props; return ( <Input value={value} placeholder={placeholder || ""} onChange={(val: any) => onChange(val)} ></Input> ); } }
使用設置器
開發完畢之后,需發包或者通過link的方式使用AltStringSetter
到設計器中:
import AltStringSetter from 'AltStringSetter'; import { setters } from '@alilc/lowcode-engine'; const { registerSetter } = registerSetter; registerSetter('AltStringSetter', AltStringSetter);
在物料庫內設置器開發
上面我們介紹了單獨去開發設置器,需發包后注冊到引擎中使用。還有一種情況一些設置器是跟隨組件,為組件使用,不需要共享,我們可以直接可以在物料庫中開發設置器。
設置器開發
之前我們介紹過通過官方物料庫腳手架去開發組件。組件在編譯完成之后會在根目錄生成lowcode
文件夾,里面的內容為組件的meta
信息。
我們可以在當前目錄創建_setter
文件夾,來開發我們的setter,setter開發方式按官方文檔去開發。在這里,我們開發了一個DefaultValueSetter
(默認值setter)。
import React, { createElement } from 'react'; import { Switch, Select, Input, Button, } from '@alifd/next'; import { event } from '@alilc/lowcode-engine'; import './style.less'; const Option = Select.Option; export interface DefaultValueSetterProps { fieldType: 'input' | 'textarea' | 'number', onChange: (value) => void; value: IValue } export interface DefaultValueSetterState {} export class DefaultValueSetter extends React.Component<DefaultValueSetterProps, DefaultValueSetterState> { static displayName = 'DefaultValueSetter'; constructor(props) { super(props); this.state = { }; } componentDidMount(): void { event.on(EDefaultValueSetterEventName.ValueChange, this.formulaValueChange) } // ...省略部分代碼 handleValueTypeChange = (valueType) => { const { onChange, value } = this.props; onChange({ ...value, valueType }); } handleValueChange = (currValue) => { const { onChange, value } = this.props; const newVale = { ...value, value: currValue, }; onChange(newVale); } render() { const { fieldType, value } = this.props; console.log('value, defaultValue', value, this.props) return (<div className="lowcode-setter-ui-material-setter"> <Select style={{ width: '100%', marginBottom: 10 }} value={value?.valueType} onChange={this.handleValueTypeChange}> <Option value='1'>自定義</Option> <Option value='2'>公式編輯</Option> </Select> {this.getItem()} </div>) } }
使用設置器
設置器開發完成后,我們可以在組件的meta.ts
中使用剛剛開發的設置器。
{ "title": { "label": { "type": "i18n", "en-US": "format", "zh-CN": "默認值" } }, "name": "defaultValue", "setter": { "componentName": DefaultValueSetter, //默認值設置器 "props": { "fieldType": 'input' }, "isRequired": false, "initialValue": { valueType: '1', value: "", } } },
工程目錄結構為
結束語
原文鏈接:https://juejin.cn/post/7198803639992352825
相關推薦
- 2022-09-23 Pandas時間類型轉換與處理的實現示例_python
- 2022-03-16 使用Lvs+Nginx集群搭建高并發架構的實現示例_nginx
- 2022-08-30 Springcloud--Ribbon組件來實現服務調用的負載均衡
- 2022-02-01 使用 file_get_contents 獲取網站信息報錯failed to open stream
- 2023-03-01 Python中getservbyport和getservbyname函數的用法大全_python
- 2022-06-01 python中parser.add_argument()用法實例(命令行選項、參數和子命令解析器)_
- 2022-12-27 Python?PyQt5實現拖放效果的原理詳解_python
- 2022-07-13 Docker技術_Docker與傳統虛擬機以及傳統容器的差異
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支