我对React组件有问题,该组件呈现多部分表单并通过API生成结果。
当用户通过表单字段选择项目时,结果会实时更新,并且表单字段本身也会更新以删除不适用的选项。
我的API调用在componentDidUpdate
中进行。我首先检查是否是已更新的表单,不是结果或其他任何内容。然后,我进行API调用并更新结果状态和新的字段值。 (没有没有无限循环!我对此很确定。)
这在Firefox和Safari中效果很好。问题似乎出在Chrome浏览器中,其中API后调用setState
大约需要4秒钟的时间(使用Chrome的性能工具,这在很大程度上似乎是"componentDidUpdate Warning: Scheduled a cascading update"
的结果。)
我不明白的是:
当向组件的状态写入大量数据时,似乎会发生此错误-在这种情况下约为400k。而且,当然,仅在Chrome中。
我尝试到处寻找,而我所看到的只是关于无限循环的东西……这不是这里的问题。有什么建议或类似的经验吗?
更新:
本应包含一些代码……这里显然遗漏了很多;这似乎是问题所在。
componentDidUpdate(prevProps, prevState) {
if (this.state.results === prevState.results) {
this.updateSearchParams();
fetch(`/api/stories-in-text/search/?`+this.getSearchParams())
.then(response => response.json())
.then(json => {
this.setState(
{
results: json.result,
theme_options: json.themes,
titles_options: json.titles,
textual_collections_options: json.textual_collections,
characters_in_story_body_options: json.characters_in_story_body,
characters_in_frame_options: json.characters_in_frame,
places_in_story_body_options: json.places_in_story_body,
places_in_frame_options: json.places_in_frame,
component_has_data: true,
}
);
});
}
}