【发布时间】:2018-09-13 14:05:52
【问题描述】:
我正在渲染我的组件:
<PanelGroup>
{this.renderPanel1()}
{this.renderPanel2()}
{this.renderPanel3()}
</PanelGroup>
现在我的一个面板只有在其可用属性设置为true 时才可用。 render() 方法否则返回 null。
我的<PanelGroup> 应该在除最后一个元素之外的所有元素的底部添加一个分隔线。
我尝试使用下面的代码来完成,但是因为即使panel2 返回 null,仍然添加了分隔符,并且代码不起作用。
如何过滤掉所有返回 null 的面板? :)
<div>
{React.Children.map(
React.Children.toArray(props.children),
(child: React.ReactElement<PanelProps>, i) => {
return (
<div>
{React.cloneElement(child as React.ReactElement<PanelProps>, child.props)}
{/*Add divider after all elements except last*/}
{i < React.Children.count(props.children) -1 && <Divider/>}
</div>
)
}
)}
</div>
【问题讨论】:
-
你在哪里设置可用的
prop?也许available属性的逻辑可以用于过滤... -
仍在搜索:D
-
顺便可以直接将
props.children传入React.Children.map,无需调用React.Children.toArray -
Olivier,然后我得到“Uncaught TypeError: Cannot read property 'props' of null”
标签: reactjs