亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

阿里低代碼框架lowcode-engine自定義設(shè)置器詳解

 更新時間:2023年02月12日 10:09:02   作者:杰出D  
這篇文章主要為大家介紹了阿里低代碼框架lowcode-engine自定義設(shè)置器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

之前介紹了lowcode-engine引擎的自定義物料。在具體實際開發(fā)過程中,雖然官方提供了許多設(shè)置器,但可能滿足不了我們的需要,需要我們自定義設(shè)置器。

官方腳手架設(shè)置器開發(fā)

設(shè)置器主要用于低代碼組件屬性值的設(shè)置,顧名思義叫"設(shè)置器",又稱為 Setter。由于組件的屬性有各種類型,需要有與之對應(yīng)的設(shè)置器支持,每一個設(shè)置器對應(yīng)一個值的類型。

項目初始化

  • lowcode官方給我們提供了腳手架,我們通過腳手架可以快速創(chuàng)建
npm init @alilc/element lowcode-app-material  // lowcode-app-material項目名稱
  • 我們選擇物料【組件設(shè)置器(setter)】類型。確認(rèn)

  • 安裝依賴,啟動調(diào)試環(huán)境
npm & yarn install

安裝好依賴之后,就可以啟動開發(fā)環(huán)境

yarn dev

開發(fā)自己的設(shè)置器

import * as React from "react";
import { Input } from "@alifd/next";
import "./index.scss";
interface AltStringSetterProps {
  // 當(dāng)前值
  value: string;
  // 默認(rèn)值
  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>
    );
  }
}

使用設(shè)置器

開發(fā)完畢之后,需發(fā)包或者通過link的方式使用AltStringSetter 到設(shè)計器中:

import AltStringSetter from 'AltStringSetter';
import { setters } from '@alilc/lowcode-engine';
const { registerSetter } = registerSetter;
registerSetter('AltStringSetter', AltStringSetter);

在物料庫內(nèi)設(shè)置器開發(fā)

上面我們介紹了單獨去開發(fā)設(shè)置器,需發(fā)包后注冊到引擎中使用。還有一種情況一些設(shè)置器是跟隨組件,為組件使用,不需要共享,我們可以直接可以在物料庫中開發(fā)設(shè)置器。

設(shè)置器開發(fā)

之前我們介紹過通過官方物料庫腳手架去開發(fā)組件。組件在編譯完成之后會在根目錄生成lowcode文件夾,里面的內(nèi)容為組件的meta信息。

我們可以在當(dāng)前目錄創(chuàng)建_setter文件夾,來開發(fā)我們的setter,setter開發(fā)方式按官方文檔去開發(fā)。在這里,我們開發(fā)了一個DefaultValueSetter(默認(rèn)值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>)
  }
}

使用設(shè)置器

設(shè)置器開發(fā)完成后,我們可以在組件的meta.ts中使用剛剛開發(fā)的設(shè)置器。

  {
        "title": {
          "label": {
            "type": "i18n",
            "en-US": "format",
            "zh-CN": "默認(rèn)值"
          }
        },
        "name": "defaultValue",
        "setter": {
          "componentName": DefaultValueSetter, //默認(rèn)值設(shè)置器
          "props": {
            "fieldType": 'input'
          },
          "isRequired": false,
          "initialValue": {
            valueType: '1',
            value: "",
          }
        }
      },

工程目錄結(jié)構(gòu)為

結(jié)束語

以上就是設(shè)置器的開發(fā)和使用。后續(xù)我們介紹一下基于lowcode引擎做出的一個完整的案例,更多關(guān)于lowcode-engine自定義設(shè)置器的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • React 非父子組件傳參的實例代碼

    React 非父子組件傳參的實例代碼

    React 主要用于構(gòu)建UI,很多人認(rèn)為 React 是 MVC 中的 V(視圖)。本文給大家介紹React 非父子組件傳參的相關(guān)知識,感興趣的朋友跟隨一起看看吧
    2021-04-04
  • React useEffect的理解與使用

    React useEffect的理解與使用

    這篇文章主要介紹了React useEffect的理解與使用,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下
    2021-04-04
  • React實現(xiàn)動態(tài)調(diào)用的彈框組件

    React實現(xiàn)動態(tài)調(diào)用的彈框組件

    這篇文章主要為大家詳細(xì)介紹了React實現(xiàn)動態(tài)調(diào)用的彈框組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • React+ts實現(xiàn)二級聯(lián)動效果

    React+ts實現(xiàn)二級聯(lián)動效果

    這篇文章主要為大家詳細(xì)介紹了React+ts實現(xiàn)二級聯(lián)動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解react中的state的簡寫方式

    詳解react中的state的簡寫方式

    React是一個狀態(tài)機(jī)主要體現(xiàn)在state上,通過與用戶交易實現(xiàn)不同的狀態(tài),state是組件的私有屬性,是用來初始化的,本文重點給大家介紹react中的state的簡寫方式,感興趣的朋友一起看看吧
    2021-08-08
  • React.Children的用法詳解

    React.Children的用法詳解

    這篇文章主要介紹了React.Children的用法詳解,幫助大家更好的理解和學(xué)習(xí)使用React框架,感興趣的朋友可以了解下
    2021-04-04
  • react實現(xiàn)無限循環(huán)滾動信息

    react實現(xiàn)無限循環(huán)滾動信息

    這篇文章主要為大家詳細(xì)介紹了react實現(xiàn)無限循環(huán)滾動信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 基于webpack開發(fā)react-cli的詳細(xì)步驟

    基于webpack開發(fā)react-cli的詳細(xì)步驟

    這篇文章主要介紹了基于webpack開發(fā)react-cli的詳細(xì)步驟,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • React Native中WebView與html雙向通信遇到的坑

    React Native中WebView與html雙向通信遇到的坑

    這篇文章主要介紹了React Native中WebView與html雙向通信的一些問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • React中完整實例講解Recoil狀態(tài)管理庫的使用

    React中完整實例講解Recoil狀態(tài)管理庫的使用

    這篇文章主要介紹了React中Recoil狀態(tài)管理庫的使用,Recoil的產(chǎn)生源于Facebook內(nèi)部一個可視化數(shù)據(jù)分析相關(guān)的應(yīng)用,在使用React的實現(xiàn)的過程中,因為現(xiàn)有狀態(tài)管理工具不能很好的滿足應(yīng)用的需求,因此催生出了Recoil,對Recoil感興趣可以參考下文
    2023-05-05

最新評論