我有一个代码,它是react中的一个组件,用于Redux从服务器获取数据。这是我非常简单的组件:
ZonedDateTime
但是当我使用这个组件时,它给了我一个错误,说“调查”为空。我解决了这个问题,我发现componentWillMount中的getSurvey函数何时运行我的render方法,然后执行其redux操作以执行更改状态并将其传递给我的组件进行渲染的过程,这就是我的问题。 / p>
有没有更好的方法可以解决这个问题而无需使用大条件?
答案 0 :(得分:2)
您的调查默认值可能为空。因此,当组件首次呈现const { survey } = this.props;
中的'survey'为null时。获取调查的请求是异步的,因此响应可能会/将在初始渲染之后出现。
一种解决方案可能是在您的状态上带有“正在加载”标志。如果为true,则可以在渲染组件时显示加载程序。您可以在触发请求以获取调查的请求时将标志设置为true,如果请求已完成,则可以将其设置为false。到那时,应该设置勘测,您可以根据需要渲染组件。当然,请求响应必须成功。
答案 1 :(得分:0)
这是因为您的const { survey } = this.props;
为空。要处理此问题,您需要进行某种检查,例如
const { survey } = this.props;
if(!survey) return null;//ensure component does not render if survey not found
const { name } = survey; //It means we find survey here we can move for next logic