Javascript SharePoint-未捕获(承诺中)错误:不能多次设置初始状态 今日更新-2020年8月5日
现在最后一个面包屑项正在更新,但我仍然有控制台错误:Uncaught(in promise)错误:不能多次设置初始状态。 有人有这个问题吗 老问题 我正在尝试在SharePoint在线页面中创建面包屑。每当我进入一个站点页面,面包屑都不会更新,最后一个元素仍然是旧的(不是实际的)。实际的网站页面正在浏览器中加载,就像网站集内容中的框架一样。 我尝试使用componentDidUpdate方法,但当我单击另一个页面时,它没有进入该方法。未调用prevProps arg,并且应该调用它,因为url已更改 例如:Javascript SharePoint-未捕获(承诺中)错误:不能多次设置初始状态 今日更新-2020年8月5日,javascript,reactjs,sharepoint,state,sharepoint-online,Javascript,Reactjs,Sharepoint,State,Sharepoint Online,现在最后一个面包屑项正在更新,但我仍然有控制台错误:Uncaught(in promise)错误:不能多次设置初始状态。 有人有这个问题吗 老问题 我正在尝试在SharePoint在线页面中创建面包屑。每当我进入一个站点页面,面包屑都不会更新,最后一个元素仍然是旧的(不是实际的)。实际的网站页面正在浏览器中加载,就像网站集内容中的框架一样。 我尝试使用componentDidUpdate方法,但当我单击另一个页面时,它没有进入该方法。未调用prevProps arg,并且应该调用它,因为url已
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>
constructor(道具:ISiteBreadcrumbProps){
超级(道具);
//启动所述组件
此.state={
面包屑:[],
};
}
公共组件didmount(){
//做事
这是我的国家({
面包屑:新面包屑列表
});
}
公共组件更新(prevProps、prevState){
if(prevProps.context.pageContext.site.serverRequestPath!==this.props.context.pageContext.site.serverRequestPath){
这是我的国家({
面包屑:新面包屑列表
});
}
}
我在控制台日志中有此错误:
未捕获(承诺中)错误:不能多次设置初始状态。
在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
谢谢 对我来说就是这样 面包屑文件 应用程序自定义程序文件#(在onInit方法中)
public onInit():承诺{
this.context.placeholderProvider.changedEvent.add(this,this.\u renderPlaceHolders);
这个;
**//并将此添加到**
this.context.application.NavigateEvent.add(this,()=>{
这个;
});
返回承诺。解决();
}
- 重新渲染组件
- 对我来说,它是这样工作的
面包屑文件
应用程序自定义程序文件#(在onInit方法中)
public onInit():承诺{
this.context.placeholderProvider.changedEvent.add(this,this.\u renderPlaceHolders);
这个;
**//并将此添加到**
this.context.application.NavigateEvent.add(this,()=>{
这个;
});
返回承诺。解决();
}
- 重新渲染组件
newreadcrumpslist
来自componentDidMount()
此列表获取面包屑的值。是否可以发布相关代码?它将帮助我们更快地帮助您:D@AttemptedMastery,我编辑了我的问题,其中是newreadcrumpslist
来自componentDidMount()
此列表获取面包屑的值
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>();
}