【发布时间】:2020-01-29 14:45:16
【问题描述】:
假设我正在制作一个包装器组件,它应该只在传入一些子节点时才呈现自己:
const Wrapper = ({children}) => {
if (!children) return null
return <div>{children}</div>
}
问题在于children 可能是一个包含空值的Fragment,或者是一个空值数组。或者一个包含一个片段的片段包含...
<Wrapper>hey</Wrapper> // renders <div>hey</div> ????
<Wrapper>{null}</Wrapper> // renders nothing ????
<Wrapper>{[null]}</Wrapper> // renders <div/> ????
<Wrapper><React.Fragment>{null}</React.Fragment></Wrapper> // renders <div/> ????
是否有检查所有这些条件的规范方法?
【问题讨论】:
-
你能详细描述一个场景吗?
-
你添加一个div id,通过它你可以检查该id的组件是否已经渲染
-
您必须对
children进行更多检查,例如它是否是一个数组,并相应地进行渲染。