default: resolveComponent()

in packages/vue/src/components/ReactiveField.ts [68:146]


        default: resolveComponent(() => [], content),
      }
    }
  }
  const patchSlot =
    (slotName: string) =>
    (...originArgs) =>
      slots[slotName]?.({ field, form: field.form, ...originArgs[0] }) ?? []

  const patchedSlots: Record<string, (...args: any) => unknown[]> = {}
  slotNames.forEach((name) => {
    patchedSlots[name] = patchSlot(name)
  })

  // for named slots
  if (content && typeof content === 'object' && !isVueOptions(content)) {
    Object.keys(content).forEach((key) => {
      const child = content[key]
      const slot = patchedSlots[key] ?? (() => [])
      patchedSlots[key] = resolveComponent(slot, child)
    })
    return patchedSlots
  }
  // maybe default slot is empty
  patchedSlots['default'] = resolveComponent(
    patchedSlots['default'] ?? (() => []),
    content
  )
  return patchedSlots
}

const createFieldInVue2 = (innerCreateField) => {
  return () => {
    let res: GeneralField
    const disposer = reaction(() => {
      res = innerCreateField()
    })
    disposer()
    return res
  }
}

export default observer({
  name: 'ReactiveField',
  props: {
    fieldType: {
      type: String,
      default: 'Field',
    },
    fieldProps: {
      type: Object,
      default: () => ({}),
    },
  },
  setup(props: IReactiveFieldProps, { slots }) {
    const formRef = useForm()
    const parentRef = useField()
    const optionsRef = inject(SchemaOptionsSymbol, ref(null))
    let createField = () =>
      formRef?.value?.[`create${props.fieldType}`]?.({
        ...props.fieldProps,
        basePath: props.fieldProps?.basePath ?? parentRef.value?.address,
      })

    if (isVue2) {
      createField = createFieldInVue2(createField)
    }

    const fieldRef = shallowRef(createField()) as Ref<GeneralField>
    watch(
      () => props.fieldProps,
      () => (fieldRef.value = createField())
    )
    useAttach(fieldRef)
    provide(FieldSymbol, fieldRef)
    return () => {
      const field = fieldRef.value
      const options = optionsRef.value
      if (!field) {