SharePoint-未捕获(承诺)错误:不能多次设置初始状态

时间:2020-06-23 15:30:16

标签: javascript reactjs sharepoint state sharepoint-online

立即更新-2020年5月8日

现在,最后一个面包屑项目正在更新,但是我仍然遇到控制台错误:未捕获(承诺)错误:不能多次设置初始状态。 有人遇到这个问题吗?

旧问题

我正在尝试在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

谢谢!

1 个答案:

答案 0 :(得分:0)

对我来说,它是这样工作的

面包屑文件

public componentDidUpdate(prevProps: ISiteBreadcrumbProps, prevState: ISiteBreadcrumbState) {
    if (prevProps!== this.props) {
      this.startGeneratingBreadcrumbs();
    }
  }

App Customizer文件号(在onInit方法内部)

 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>();
  }
  • 重新渲染组件