我正在使用 Carbon 设计和 React - 以下为示例:
<HeaderContainer render={({
isSideNavExpanded,
onClickSideNavExpand
}) => {
console.log("Rendering", onClickSideNavExpand)
console.log("Rendering", isSideNavExpanded)
return (<> ...
<HeaderMenuButton aria-label={isSideNavExpanded ? 'Close menu' : 'Open menu'} onClick={onClickSideNavExpand} isActive={isSideNavExpanded} aria-expanded={isSideNavExpanded} />
my stuff
...</>)
}/>
我不明白这里的 render 方法。这种方法和使用“children”有什么区别,比如:
<HeaderContainer>
<>
<HeaderMenuButton aria-label={isSideNavExpanded ? 'Close menu' : 'Open menu'} onClick={onClickSideNavExpand} isActive={isSideNavExpanded} aria-expanded={isSideNavExpanded} />
... my stuff ...
</>
</HeaderContainer>
为什么用第一种方式而不是第二种方式实现?我认为它的可读性差很多...
传递渲染函数被称为
render prop
如果
isSideNavExpanded
和onClickSideNavExpand
存在于之内HeaderContainer
,则不能HeaderMenuButton
像第二个例子中那样将它们传递给。