UI Components
Member
成员组件。根据成员类型,动态调用 React/Vue.Section.<MemberType>
命名空间下的组件, 如组件存在则进行绘制,否则抛出异常。 React/Vue.Section.<MemberType>
命名空间下的组件可自定义 onAction 函数的触发时机, 触发时须传入满足 MemberComponent*Action 数据结构的唯一参数。
// Member Props
// @prop {ReactiveInstance} reactive
// @prop {Object} member
// @prop {string} member.id - 成员唯一标识
// @prop {Function} [onAction] - 可传入 'React.Section.<MemberType>' 命名空间下组件的 onAction 函数
// @example
import React from 'react'
import { UI } from 'rcfm/react'
// @namespace UI.use('React.Section.Member')
const Member = UI.use('React.Section.Member')
export default function MyComponent(props = {}) {
const {reactive, memberId} = props
const actionHandler = (param) => console.log(param)
return <Member
reactive={reactive}
member={{id: memberId}}
onAction={actionHandler}
/>
}
// Member Props
// @prop {ReactiveInstance} reactive
// @prop {Object} member
// @prop {string} member.id - 成员唯一标识
// Member Emmits
// @emmit action - 可传入 'Vue.Section.<MemberType>' 命名空间下组件的 onAction 函数
// @example
<script setup>
import { UI } from 'rcfm/vue'
const props = defineProps(['reactive', 'memberId'])
// @namespace UI.use('Vue.Section.Member')
const Member = UI.use('Vue.Section.Member')
const actionHandler = (param) => console.log(param)
</script>
<template>
<Member
:reactive="reactive"
:member="{id: memberId}"
@action="actionHandler"
/>
</template>
Member Editor
成员配置组件。根据成员类型,尝试调用 React/Vue.Section.<MemberType>.Editor
命名空间下的组件, 如组件存在则进行绘制,否则调用默认成员配置组件并绘制。 匹配的组件可自定义 onAction 函数的触发时机,触发时须传入满足 MemberComponent*Action 数据结构的唯一参数。
默认成员配置组件会调用 Member PropEditor, 对成员 schema 定义范围内的各属性配置组件进行绘制。
// Member Editor Props
// @prop {ReactiveInstance} reactive
// @prop {Object} member
// @prop {string} member.id - 成员唯一标识
// @prop {Function} [onAction] - 可传入 onAction 函数
// @example
import React from 'react'
import { UI } from 'rcfm/react'
// @namespace UI.use('React.Section.Member.Editor')
const MemberEditor = UI.use('React.Section.Member.Editor')
export default function MyComponent(props = {}) {
const {reactive, memberId} = props
const actionHandler = (param) => console.log(param)
return <MemberEditor
reactive={reactive}
member={{id: memberId}}
onAction={actionHandler}
/>
}
// Member Editor Props
// @prop {ReactiveInstance} reactive
// @prop {Object} member
// @prop {string} member.id - 成员唯一标识
// Member Editor Emmits
// @emmit action - 可传入 onAction 函数
// @example
<script setup>
import { UI } from 'rcfm/vue'
const props = defineProps(['reactive', 'memberId'])
// @namespace UI.use('Vue.Section.Member.Editor')
const MemberEditor = UI.use('Vue.Section.Member.Editor')
const actionHandler = (param) => console.log(param)
</script>
<template>
<MemberEditor
:reactive="reactive"
:member="{id: memberId}"
@action="actionHandler"
/>
</template>
Member Previewer
成员预览组件。根据成员类型,尝试调用 React/Vue.Section.<MemberType>.Previewer
命名空间下的组件, 如组件存在则进行绘制,否则尝试调用 React/Vue.Section.<MemberType>
命名空间下的组件并绘制为只读状态, 如未找到任何匹配的组件,则抛出异常。 匹配的组件可自定义 onAction 函数的触发时机,触发时须传入满足 MemberComponent*Action 数据结构的唯一参数。
// Member Previewer Props
// @prop {ReactiveInstance} reactive
// @prop {Object} member
// @prop {string} member.id - 成员唯一标识
// @prop {Function} [onAction] - 可传入 onAction 函数
// @example
import React from 'react'
import { UI } from 'rcfm/react'
// @namespace UI.use('React.Section.Member.Previewer')
const MemberPreviewer = UI.use('React.Section.Member.Previewer')
export default function MyComponent(props = {}) {
const {reactive, memberId} = props
const actionHandler = (param) => console.log(param)
return <MemberPreviewer
reactive={reactive}
member={{id: memberId}}
onAction={actionHandler}
/>
}
// Member Previewer Props
// @prop {ReactiveInstance} reactive
// @prop {Object} member
// @prop {string} member.id - 成员唯一标识
// Member Previewer Emmits
// @emmit action - 可传入 onAction 函数
// @example
<script setup>
import { UI } from 'rcfm/vue'
const props = defineProps(['reactive', 'memberId'])
// @namespace UI.use('Vue.Section.Member.Previewer')
const MemberPreviewer = UI.use('Vue.Section.Member.Previewer')
const actionHandler = (param) => console.log(param)
</script>
<template>
<MemberPreviewer
:reactive="reactive"
:member="{id: memberId}"
@action="actionHandler"
/>
</template>
Member PropEditor
成员属性配置组件。根据成员类型及属性名称,依次尝试调用以下命名空间中的组件:
React/Vue.Section.<MemberType>.PropEditor
React/Vue.Section.<MemberType>.PropEditor.<Property>
React/Vue.Section.Member.PropEditor.<Property>
如组件存在则进行绘制,否则调用默认成员属性配置组件并绘制。 匹配的组件可自定义 onAction 函数的触发时机,触发时须传入满足 MemberComponent*Action 数据结构的唯一参数。
// Member PropEditor Props
// @prop {ReactiveInstance} reactive
// @prop {Object} member
// @prop {string} member.id - 成员唯一标识
// @prop {string} member.prop - 成员属性名称
// @prop {Function} [onAction] - 可传入 onAction 函数
// @example
import React from 'react'
import { UI } from 'rcfm/react'
// @namespace UI.use('React.Section.Member.PropEditor')
const MemberPropEditor = UI.use('React.Section.Member.PropEditor')
export default function MyComponent(props = {}) {
const {reactive, memberId, property} = props
const actionHandler = (param) => console.log(param)
return <MemberPropEditor
reactive={reactive}
member={{id: memberId, prop: property}}
onAction={actionHandler}
/>
}
// Member PropEditor Props
// @prop {ReactiveInstance} reactive
// @prop {Object} member
// @prop {string} member.id - 成员唯一标识
// @prop {string} member.prop - 成员属性名称
// Member PropEditor Emmits
// @emmit action - 可传入 onAction 函数
// @example
<script setup>
import { UI } from 'rcfm/vue'
const props = defineProps(['reactive', 'memberId', 'property'])
// @namespace UI.use('Vue.Section.Member.PropEditor')
const MemberPropEditor = UI.use('Vue.Section.Member.PropEditor')
const actionHandler = (param) => console.log(param)
</script>
<template>
<MemberPropEditor
:reactive="reactive"
:member="{id: memberId, prop: property}"
@action="actionHandler"
/>
</template>
Form
表单组件。按照 Reactive 实例中各成员状态,绘制表单填写视图。
// Form Props
// @prop {ReactiveInstance} reactive
// @example
import React from 'react'
import { UI } from 'rcfm/react'
// @namespace UI.use('React.View.Form')
const Form = UI.use('React.View.Form')
export default function MyForm(props = {}) {
const {reactive} = props
return <Form reactive={reactive} />
}
// Form Props
// @prop {ReactiveInstance} reactive
// @example
<script setup>
import { UI } from 'rcfm/vue'
const props = defineProps(['reactive'])
// @namespace UI.use('Vue.View.Form')
const Form = UI.use('Vue.View.Form')
</script>
<template>
<Form :reactive="reactive" />
</template>
Form Builder
表单配置组件。按照 Reactive 实例中各成员状态,绘制表单配置视图。
// Form Props
// @prop {ReactiveInstance} reactive
// @example
import React from 'react'
import { UI } from 'rcfm/react'
// @namespace UI.use('React.View.Form.Builder')
const FormBuilder = UI.use('React.View.Form.Builder')
export default function MyFormBuilder(props = {}) {
const {reactive} = props
return <FormBuilder reactive={reactive} />
}
// Form Props
// @prop {ReactiveInstance} reactive
// @example
<script setup>
import { UI } from 'rcfm/vue'
const props = defineProps(['reactive'])
// @namespace UI.use('Vue.View.Form.Builder')
const FormBuilder = UI.use('Vue.View.Form.Builder')
</script>
<template>
<FormBuilder :reactive="reactive" />
</template>