【发布时间】:2016-03-13 20:36:08
【问题描述】:
我正在尝试为我拥有的所有可重用反应组件创建一个节点模块。我在导入 jsx 文件时卡住了。 我有一个基本的 jsx 模块,即在 components 文件夹中的 greeting.jsx。
//greeting.jsx
import React from 'react';
export default class Greeting extends React.Component {
render() {
return (
<p>Hello World</p>
)
}
}
文件夹结构:-
- index.js
- components
¦-- Greeting
¦-- greeting.jsx
¦-- <Other Modules like Greeting>
index.js 导入所有组件并导出它们
//index.js
import Greeting from './components/Greeting/greeting.jsx';
export default {
Greeting
};
当我必须使用问候模块时,我必须导入该模块。就像下面代码中的方式一样。但是这样做会给我页面上的错误
import React from 'react';
import ReactDOM from 'react-dom';
import GreetingModule from './index.js';
ReactDOM.render( <GreetingModule />, document.getElementById('content') );
错误:-
warning.js:45 Warning: React.createElement: type should not be null, undefined, boolean, or number. It should be a string (for DOM elements) or a ReactClass (for composite components).
invariant.js:39 Uncaught Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.
这就是我现在卡住的地方。虽然如果我直接导入 jsx 文件(如下所示),那么它可以工作。
import React from 'react';
import ReactDOM from 'react-dom';
import GreetingModule from './components/Greeting/greeting.jsx';
ReactDOM.render( <GreetingModule />, document.getElementById('content') );
但这不是我想要的方式,因为我正在尝试创建一个 npm 模块,我的 index.js 应该导出所有的反应组件。
我尝试用谷歌搜索为反应组件创建一个 npm 模块,但找不到任何东西。请帮忙解决问题
【问题讨论】:
标签: node.js reactjs module npm