Reactjs 在呈现组件之前,是否会发出警告?

Reactjs 在呈现组件之前,是否会发出警告?,reactjs,react-redux,react-proptypes,Reactjs,React Redux,React Proptypes,我有一个组件,它环绕其他组件,并在加载所有必要的数据后有条件地呈现它们。然而,我得到了proptype错误——按照的思路,prop x在组件Y中被标记为必需的,但其值未定义prop x是尚未从服务器返回的数据,component Y是数据返回时将渲染的子组件 下面是我所说的一个例子: <Wrapper contentLoaded={hasDataLoaded && !!dataThatWillLoad}> <ComponentWithData dat

我有一个组件,它环绕其他组件,并在加载所有必要的数据后有条件地呈现它们。然而,我得到了proptype错误——按照
的思路,prop x在组件Y中被标记为必需的,但其值未定义
prop x
是尚未从服务器返回的数据,
component Y
是数据返回时将渲染的子组件

下面是我所说的一个例子:

<Wrapper contentLoaded={hasDataLoaded && !!dataThatWillLoad}>
  <ComponentWithData
    dataThatWillLoad={dataThatWillLoad}
    dataThatAlreadyExists={dataThatAlreadyExists}
   />
</Wrapper>

和我的包装器组件:

const Wrapper = ({ contentLoaded, children }) => {
  if (contentLoaded) return children;
  return <p>Loading</p>;
}
const包装器=({contentLoaded,children})=>{
if(contentLoaded)返回子项;
返回加载;
}
这将产生错误
Prop datawillload在ComponentWithData中标记为必需,但其值未定义

这对我来说似乎很奇怪,因为在数据返回之前,
ComponentWithData
甚至都不会被渲染。这是否与检查PropType时有关?这段特定的数据是通过mapStateToProps进入组件的,这可能与此有关吗


谢谢

按照你的写作方式,孩子们总是会被创造出来,导致你的问题。通过无条件地将它们作为子对象添加到包装器组件中,React将在将它们添加到子对象之前使它们生效。另一种方法是使用组件本身向包装器添加一个道具。您可以在React路由器提供的
路由
组件中看到这方面的示例:

使用此设计模式,您应该能够跳过渲染,只在加载道具时渲染组件,不加载道具时加载单独的组件


编辑:TLDR:按照您的设置方式,
ComponentWithData
组件在作为孩子交给包装器之前会被创建并提供道具。

哦,这真的很酷。我不知道组件的存在会在组件生命周期开始时影响外部的proptype。你知道的越多。谢谢