react 插槽传参
react中其实没法直接给插槽传递参数,只能借助一点技术手段:函数。
这种方式有个专有名词叫:render-props。
render-props的具体的方式就是,子组件作为插槽是用函数的形式,而容器组件渲染的时候对应的就调用这个函数,在调用函数的时候,把需要传递的参数传入函数,这样在插槽函数的作用域内就拿到了数据:
() => {
return (
<MainComp>
{
(data) => (<Staff staff={data} />)
}
</MainComp>
)
}
看下容器MainComp组件:
const MainComp = (props) => {
const [data, setData] = useState({})
useEffect(() => {
const info = await getData()
setData(info)
}, [])
return (
<div>
{
props.children && props.children(data)
}
</div>
)
}
当然了,这种函数形式的“插槽”不止可以用作插槽,用在普通的props上自然也是可以的。在react世界里,凡是要从另一个组件拿数据的场合,都可以考虑传个函数:
() => {
return (
<MainComp
staff={(data) => (<Staff staff={data} />)}
/>
)
}
对应的MainComp,最终也是通过函数调用给子组件传递参数,只是获取子组件的方式换一下:
const MainComp = (props) => {
const [data, setData] = useState({})
useEffect(() => {
const info = await getData()
setData(info)
}, [])
return (
<div>
{/* 这里变一下 */}
{
props.staff && props.staff(data)
}
</div>
)
}
本文作者:yunChuans
本文链接:https://www.cnblogs.com/zychuan/p/16865821.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步