现在,最后一个面包屑项目正在更新,但是我仍然遇到控制台错误:未捕获(承诺)错误:不能多次设置初始状态。 有人遇到这个问题吗?
我正在尝试在SharePoint Online页面中创建面包屑。每当我访问站点页面时,面包屑都不会更新,最后一个元素仍然是旧元素(而不是实际元素)。实际的网站页面正在加载到浏览器中,就像网站集内容中的框架一样。 我尝试使用componentDidUpdate方法,但是当我单击另一页时,它没有进入该方法。不会调用prevProps arg,它应该被调用,因为网址已更改。
示例:
constructor(props: ISiteBreadcrumbProps) {
super(props);
// Initiate the component stated
this.state = {
breadcrumbItems: [],
};
}
public componentDidMount() {
//do things
this.setState({
breadcrumbItems: newBreadcrumbsList
});
}
public componentDidUpdate(prevProps, prevState) {
if (prevProps.context.pageContext.site.serverRequestPath !== this.props.context.pageContext.site.serverRequestPath) {
this.setState({
breadcrumbItems: newBreadcrumbsList
});
}
}
<Breadcrumb
items={this.state.breadcrumbItems} >
</Breadcrumb>
我在控制台日志中出现此错误:
未捕获(承诺)错误:不能多次设置初始状态。 在f(chunk.vendors〜sp-suite-nav-search-common_none_98b1f8b240333ccaa448.js:1) 在Module.u(chunk.vendors〜sp-suite-nav-search-common_none_98b1f8b240333ccaa448.js:1) 在Module.C(chunk.sp-suite-nav-search-common_none_94cf10ffb7278a529ef1.js:1) 在sp-pages-assembly_en_us_bfc09e3768098e83385e34c646c23abe.js:1
谢谢!
答案 0 :(得分:0)
对我来说,它是这样工作的
public componentDidUpdate(prevProps: ISiteBreadcrumbProps, prevState: ISiteBreadcrumbState) {
if (prevProps!== this.props) {
this.startGeneratingBreadcrumbs();
}
}
public onInit(): Promise<void> {
this.context.placeholderProvider.changedEvent.add(this, this._renderPlaceHolders);
this._renderPlaceHolders();
**//and added this inside**
this.context.application.navigatedEvent.add(this, () => {
this._addElement();
});
return Promise.resolve<void>();
}