---
title: setters - è®¾ç½®å¨ API
sidebar_position: 10
---
> **@types** [IPublicApiSetters](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/api/setters.ts)
> **@since** v1.0.0
## 模åç®ä»
è´è´£æ³¨å设置å¨ã管ç设置å¨ç APIãæ³¨åèªå®ä¹è®¾ç½®å¨ä¹åå¯ä»¥å¨ç©æä¸è¿è¡ä½¿ç¨ã
## æ¹æ³
### getSetter
è·åæå® setter
```typescript
/**
* è·åæå® setter
* get setter by type
* @param type
* @returns
*/
getSetter(type: string): IPublicTypeRegisteredSetter | null;
```
ç¸å
³ç±»åï¼[IPublicTypeRegisteredSetter](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/registerd-setter.ts)
### getSettersMap
è·å已注åçææ settersMap
```typescript
/**
* è·å已注åçææ settersMap
* get map of all registered setters
* @returns
*/
getSettersMap(): Map;
```
ç¸å
³ç±»åï¼[IPublicTypeRegisteredSetter](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/registerd-setter.ts)
### registerSetter
注åä¸ä¸ª setter
```typescript
/**
* 注åä¸ä¸ª setter
* register a setter
* @param typeOrMaps
* @param setter
* @returns
*/
registerSetter(
typeOrMaps: string | { [key: string]: IPublicTypeCustomView | IPublicTypeRegisteredSetter },
setter?: IPublicTypeCustomView | IPublicTypeRegisteredSetter | undefined
): void;
```
ç¸å
³ç±»åï¼
- [IPublicTypeRegisteredSetter](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/registerd-setter.ts)
- [IPublicTypeCustomView](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/custom-view.ts)
## 使ç¨ç¤ºä¾
### 注å宿¹å
ç½® Setter å°è®¾è®¡å¨ä¸
```typescript
import { setters, skeleton } from '@alilc/lowcode-engine';
import { setterMap, pluginMap } from '@alilc/lowcode-engine-ext';
import { IPublicModelPluginContext } from '@alilc/lowcode-types';
const SetterRegistry = (ctx: IPublicModelPluginContext) => {
return {
name: 'ext-setters-registry',
async init() {
// 注å setterMap
setters.registerSetter(setterMap);
// 注åæä»¶
// 注åäºä»¶ç»å®é¢æ¿
skeleton.add({
area: 'centerArea',
type: 'Widget',
content: pluginMap.EventBindDialog,
name: 'eventBindDialog',
props: {},
});
// 注ååéç»å®é¢æ¿
skeleton.add({
area: 'centerArea',
type: 'Widget',
content: pluginMap.VariableBindDialog,
name: 'variableBindDialog',
props: {},
});
},
};
}
SetterRegistry.pluginName = 'SetterRegistry';
await plugins.register(SetterRegistry);
```
### å¼åèªå®ä¹ Setter
AltStringSetter 代ç å¦ä¸ï¼
```typescript
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 {
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 (
onChange(val)}
>
);
}
}
```
å¼å宿¯ä¹åï¼æ³¨å AltStringSetter å°è®¾è®¡å¨ä¸ï¼
```typescript
import AltStringSetter from './AltStringSetter';
import { setters } from '@alilc/lowcode-engine';
const { registerSetter } = setters;
registerSetter('AltStringSetter', AltStringSetter);
```
注åä¹åï¼æä»¬å°±å¯ä»¥å¨ç©æä¸ä½¿ç¨äºï¼å
¶ä¸æ ¸å¿é
ç½®å¦ä¸ï¼
```typescript
{
"props": {
"isExtends": true,
"override": [
{
"name": "type",
"setter": "AltStringSetter"
}
]
}
}
```
宿´é
ç½®å¦ä¸ï¼
```typescript
{
"componentName": "Message",
"title": "Message",
"props": [
{
"name": "title",
"propType": "string",
"description": "æ é¢",
"defaultValue": "æ é¢"
},
{
"name": "type",
"propType": {
"type": "oneOf",
"value": [
"success",
"warning",
"error",
"notice",
"help",
"loading"
]
},
"description": "åé¦ç±»å",
"defaultValue": "success"
}
],
"configure": {
"props": {
"isExtends": true,
"override": [
{
"name": "type",
"setter": "AltStringSetter"
}
]
}
}
}
```