Javascript SharePoint-未捕获(承诺中)错误:不能多次设置初始状态 今日更新-2020年8月5日

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已

现在最后一个面包屑项正在更新,但我仍然有控制台错误: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,()=>{
      这个;
      });
      返回承诺。解决();
      }
      
      • 重新渲染组件

      您可以发布相关代码吗?它将帮助我们更快地帮助您:D@AttemptedMastery,我编辑了我的问题,
      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>();
        }