所以假设我有一个名为的组件ImageGrid
,它的定义如下:
window.ImageGrid = React.createClass({
render: function() {
return (
<div className="image-grid">
<ImageGridItem />
</div>
);
}
});
如您所见,它包含一个名为的子反应组件ImageGridItem
。定义如下。
window.ImageGridItem = React.createClass({
render: function() {
return (
<div className="item-container">something</div>
);
}
});
只要两者都是window
. 但这有点可怕,所以我想将我所有的反应组件组合在一个命名空间下window.myComponents
,例如。
因此定义更改为:
window.myComponents.ImageGrid = React.createClass({...});
window.myComponents.ImageGridItem = React.createClass({...});
现在的问题是,正如在它的 render() 函数中ImageGrid
所指的<ImageGridItem />
那样,它的 JS 版本被编译为 JS,因为ImageGridItem()
它当然是未定义的,因为它现在实际上是myComponents.ImageGridItem()
并且反应抱怨它找不到它。
是的,我意识到我不能为该组件编写 JSX 并手动执行,myComponents.ImageGridItem({attr: 'val'})
但我真的更喜欢使用 JSX html 语法快捷方式,因为它更易于阅读和开发。
有什么方法可以在仍然使用<ImageGridItem />
儿童语法的同时让它工作吗?如果没有,是否可以在 JSX 中定义 JS 命名空间?