看看这个简单的例子:
const List = function({ loading, entity }) {
return (
<Layout loading={loading}>
<span>Name: {entity.name}</span>
</Layout>
);
};
Layout
组件仅在children
为loading
时才呈现其false
。但是这里的问题是React
正在立即解决Layout
个孩子。由于entity
是null
(而loading=true
时),我收到一个错误,它无法读取name
中的null
。是否有一种简单的方法来避免此错误,因为在span
不是entity
时将始终呈现此null
吗?
目前,我知道3种选择:
span
移动到stateless function
,entity
将prop
作为children
Layout
中包装function
的整个function children
,然后在Layout
中支持{entity && <span>Name: {entity.name}</span>}
React
为什么我必须使用这些选项之一,并且可以使children
视为那些{{1}}作为函数并稍后在渲染之前解析其中的块?
答案 0 :(得分:0)
我偶然发现了同样的问题。
对我有用的是将孩子作为函数:
ready: boolean;
children?: () => ReactNode,
}> = ({ ready, children }) => {
return (
<div>{
ready ?
children() :
(
<div>not ready</div>
)
}</div>
);
};
<Layout loading={loading}>
{() =>
<span>Name: {entity.name}</span>
}
</Layout>
尽管它仍然不完美。