我对循环依赖有疑问。重要的是,我知道这种情况确实存在,但是在我看来,这种情况是绝对可以接受的,因此不需要在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
数据来匹配子项,因此浏览器返回有关循环依赖项的警告。你有什么主意我该如何解决这个问题?