mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-06-03 06:01:08 +00:00
fix: 在Transducer中添加对MixedSetter的支持
This commit is contained in:
parent
6c6df45677
commit
7317f2fab2
@ -1,12 +1,16 @@
|
|||||||
|
// all this file for polyfill vision logic
|
||||||
|
|
||||||
|
import { isValidElement } from 'react';
|
||||||
|
|
||||||
function getHotterFromSetter(setter) {
|
function getHotterFromSetter(setter) {
|
||||||
return setter && (setter.Hotter || (setter.type && setter.type.Hotter)) || []; // eslint-disable-line
|
return setter && (setter.Hotter || (setter.type && setter.type.Hotter)) || []; // eslint-disable-line
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTransducerFromSetter(setter) {
|
function getTransducerFromSetter(setter) {
|
||||||
return setter && (
|
return setter && (
|
||||||
setter.transducer || setter.Transducer
|
setter.transducer || setter.Transducer
|
||||||
|| (setter.type && (setter.type.transducer || setter.type.Transducer))
|
|| (setter.type && (setter.type.transducer || setter.type.Transducer))
|
||||||
) || null; // eslint-disable-line
|
) || null; // eslint-disable-line
|
||||||
}
|
}
|
||||||
|
|
||||||
function combineTransducer(transducer, arr, context) {
|
function combineTransducer(transducer, arr, context) {
|
||||||
@ -23,9 +27,22 @@ function combineTransducer(transducer, arr, context) {
|
|||||||
|
|
||||||
export class Transducer {
|
export class Transducer {
|
||||||
constructor(context, config) {
|
constructor(context, config) {
|
||||||
|
let { setter } = config;
|
||||||
|
|
||||||
|
// 1. validElement
|
||||||
|
// 2. SetterConfig
|
||||||
|
// 3. SetterConfig[]
|
||||||
|
if (Array.isArray(setter)) {
|
||||||
|
setter = setter[0];
|
||||||
|
} else if (isValidElement(setter) && setter.type.displayName === 'MixedSetter') {
|
||||||
|
setter = setter.props.setters[0];
|
||||||
|
} else if (typeof setter === 'object' && setter.componentName === 'MixedSetter') {
|
||||||
|
setter = setter.props.setters[0];
|
||||||
|
}
|
||||||
|
|
||||||
this.setterTransducer = combineTransducer(
|
this.setterTransducer = combineTransducer(
|
||||||
getTransducerFromSetter(config.setter),
|
getTransducerFromSetter(setter),
|
||||||
getHotterFromSetter(config.setter),
|
getHotterFromSetter(setter),
|
||||||
context,
|
context,
|
||||||
);
|
);
|
||||||
this.context = context;
|
this.context = context;
|
||||||
|
|||||||
@ -115,6 +115,8 @@ export default class MixedSetter extends Component<{
|
|||||||
className?: string;
|
className?: string;
|
||||||
}> {
|
}> {
|
||||||
private setters = nomalizeSetters(this.props.setters);
|
private setters = nomalizeSetters(this.props.setters);
|
||||||
|
// set name ,used in setting Transducer
|
||||||
|
static displayName = 'MixedSetter';
|
||||||
@obx.ref private used?: string;
|
@obx.ref private used?: string;
|
||||||
@computed private getCurrentSetter() {
|
@computed private getCurrentSetter() {
|
||||||
const { field } = this.props;
|
const { field } = this.props;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user