JS:React 和全局命名空间污染

IT技术 javascript namespaces reactjs
2021-05-19 11:42:01

我正在考虑在一个新网站中使用 react,但我仍然想知道如何使用 react 组件处理全局命名空间。例如,如果我像这样定义了几个 React 组件:

var MySlider = React.createClass({ // snip });
var MyAlert = React.createClass({ // snip });
var MyDropdown = React.createClass({ // snip });

渲染组件如下所示:

React.renderComponent(
    <MySlider />,
    document.getElementById('content')
);

但是,我更愿意为我的组件命名以避免污染全局命名空间。

var Namespace = {};
Namespace.MySlider = React.createClass({ // snip });

我猜在渲染时,由于命名空间,找不到组件。

React.renderComponent(
    <Namespace.MySlider />, // component is not found
    document.getElementById('content')
);

我在这里错过了什么?只是忽略全局命名空间污染?或者是否有可能为您的组件命名?

谢谢!

2个回答

这不完全是 React JS 问题,因为任何大型 JavaScript 代码库都必须处理module加载。我建议放弃 JavaScript 中的命名空间,而是使用module加载器。

你会得到很多关于这个的意见,但看看一些广泛使用的module加载器:

这段代码是工作。

React.renderComponent(
    Namespace.MySlider(),
    document.getElementById('content')
);

有关更多信息,请参阅文档