反应组件和循环依赖问题

时间:2019-01-14 13:17:17

标签: reactjs

我对循环依赖有疑问。重要的是,我知道这种情况确实存在,但是在我看来,这种情况是绝对可以接受的,因此不需要在Chrome调试中发出警告。

就我而言,我是从服务器获取XML的,在这种XML中,有时在组件内部(不同或相同)具有组件,因此我以相同的方式在React中创建组件:我创建父组件,如果XML则创建所有子组件包含它们。我有静态方法getComponentConfig,在其中将XML标签与组件配置相匹配:

public static getComponentConfig(component: string): any {

    switch (component) {
        case 'b':
            return new BConf();
        case 'i':
            return new IConf(); 
        // And a lot of another cases option, not necessary to this minimal problem example
    }
}

例如,我有BConf文件,其中包含用于在JSON和XML结构之间转换数据的所有方法:

export class BConf implements IComponentConfig {
    readonly xmlName: string;
    readonly reactName: any;
    readonly reactConfig: any;
    canWrapComponent: boolean;
    canBeWrapped: boolean;
    structure: any;

    constructor() {
        this.xmlName = 'b';
        this.reactName = B;
        this.reactConfig = BConf;
        this.canWrapComponent = true;
        this.canBeWrapped = false;
        this.structure = {

        };
    }

    public static staticToXml(data: IB) {
        const component = new BConf();
        return component.toXml(data);
    }

    public toJson(data: any, cid: string, tag: string): IB {
        const b: IB = {
            cid: cid,
            tag: tag,
            child: ComponentXmlJsonManager.convertToRendererJson(data.elements, tag, cid)
        };

        return b;
    }

    public toXml(data: IB): string {
        let b = '<b>';
        if (data.child) {
            b = b + ComponentXmlJsonManager.returnSmComponentXML(data.child);
        }
        b = b + '</b>';
        return b;
    }
}

在这种情况下,我可能会遇到这样的情况,即XML是此字符串的表示形式:<b>A <i>text</i> <b>what?</b></b>-这不是一个很好的示例,但这是最简单的。

方法convertToRendererJson使用getComponentConfig数据来匹配子项,因此浏览器返回有关循环依赖项的警告。你有什么主意我该如何解决这个问题?

0 个答案:

没有答案