function getItemsFromProps()

in src/setter/object-setter/index.tsx [58:87]


function getItemsFromProps(props: RowSetterProps, state?: RowSetterState) {
  const { config, field, columns } = props;
  const { extraProps } = field;
  const items: IPublicModelSettingField[] = [];
  if (columns && config?.items) {
    const l = Math.min(config.items.length, columns);
    for (let i = 0; i < config.items.length; i++) {
      const conf = config.items[i];
      if (conf.isRequired || conf.important || (conf.setter as any)?.isRequired) {
        const item = state?.items?.filter(d => d.name === conf.name)?.[0] || field.createField({
          ...conf,
          // in column-cell
          forceInline: 3,
        });
        const originalSetValue = item.extraProps.setValue;
        item.extraProps.setValue = (...args) => {
          // 调用子字段本身的 setValue
          originalSetValue?.apply(null, args);
          // 调用父字段本身的 setValue
          extraProps.setValue?.apply(null, args);
        };
        items.push(item);
      }
      if (items.length >= l) {
        break;
      }
    }
  }
  return items;
}