跳到主要内容

RenderHook 渲染钩子

用于在不同的模块中将元素添加到指定位置

想了解这个库是如何工作的,请先阅读渲染钩子章节

Render Props

<payHook.Render mark='mark' option={{ price }}>
<Text size={4} bold>需支付:¥{price}</Text>
</payHook.Render>
<payHook.Render mark='mark' option={{ price }}>{Text}</payHook.Render>
<payHook.Render mark='mark' option={{ price }} />

mark

钩子唯一标识

类型必填默认值
string

option

要传递给传入组件的 props

类型必填默认值
object

max

用于控制此处最多渲染多少个添加的元素 默认不限制

类型必填默认值
number

children

传入的子元素,可以是一个组件,或者是一个实例化的元素

类型必填默认值
Component | ReactElement

add(mark, ...eles)

添加一个或多个钩子

可以将组件直接传入,也可以传入渲染后的内容

需要注意的是只有传入未渲染的组件才能获取到钩子传入的option参数

默认子元素将会作为children传入注册的组件中

payHook.add('mark', props => {
// props 为注册钩子时传入的option <payHook.Render mark='mark' option={{ name: '名称' }} />

props.children

return <Text>{props.name}</Text>
})
payHook.add('mark', <Text>内容</Text>)

addBefore(mark, ...eles)

添加一个或多个钩子 此方法添加的元素将显示在钩子的前面

addAfter(mark, ...eles)

添加一个或多个钩子 此方法添加的元素将显示在钩子的后面

addContainer(mark, ...eles)

添加一个或多个容器钩子

这些容器是一个组件,可以套在此标记的外层,并控制这个标记的子元素

可以添加多个容器进行多层嵌套

payHook.addContainer('mark', ({ children }) => {
return <View className='a'>{children}</View>
})
payHook.addContainer('mark', ({ children }) => {
return <View className='b'>{children}</View>
})

// 多层嵌套,实际渲染相当于,后添加的在外面
<View className='b'>
<View className='a'>{children}</View>
</View>

useMark(mark, type)

用钩子的形式获取注册的内容,这样你可以更自由的使用注册的内容,注册内容是也不限定是组件或者元素,可以是任何内容

payHook.add('mark', '张三')

const name = payHook.useMark('mark')
// name 张三