export class RenderHook {
/**
* 注册钩子
* 传入钩子的子元素是默认元素,当调用 payHook.add 方法之后默认元素将被覆盖
* @example
*
* 需支付:¥{price}
*
* {Text}
*
*/
Render: (props: {
/** 钩子唯一标识 */
mark: string | string[]
/** 传递给插入此钩子的组件的参数 */
option?: {
[any]: any
}
/** 最多允许显示多少个插入的钩子 */
max?: number
children?: JSX.Element
}) => JSX.Element
/**
* 获取添加的钩子
*/
useMark: (
mark: string | string[],
type?: 'self' | 'before' | 'after' | 'container' = 'self',
) => any[]
/**
* 添加一个或多个钩子
* 可以将组件直接传入,也可以传入渲染后的内容
* 需要注意的是只有传入未渲染的组件才能获取到钩子传入的option参数
* @example
* payHook.add('mark', props => {
* // props 为注册钩子时传入的option
* return {props.name}
* })
* payHook.add('mark', 内容)
*/
add: (mark: string, ...element: any[]) => void
/**
* 添加一个或多个钩子 此方法添加的元素将显示在钩子的前面
*/
addBefore: (mark: string, ...element: any[]) => void
/**
* 添加一个或多个钩子 此方法添加的元素将显示在钩子的后面
*/
addAfter: (mark: string, ...element: any[]) => void
/**
* 添加一个或多个容器钩子
* 这些容器是一个组件,可以套在此标记的外层,并控制这个标记的子元素
* @example
* payHook.addContainer('mark', ({ children }) => {
* return {children}
* })
*/
addContainer: (mark: string, ...element: any[]) => void
}
export const appHook: RenderHook