我有一个与npm test
它看起来像这样:
import { assert } from 'assert';
import { MyProvider } from '../src/index';
import { React } from 'react';
const myProvider = (
<MyProvider>
</MyProvider>
);
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
assert.equal(-1, [1,2,3].indexOf(4));
});
});
});
不幸的是,我收到了错误
/Users/me/projects/myproj/test/test_stuff.js:11
var myProvider = _react.React.createElement(_index.MyProvider, null);
^
TypeError: Cannot read property 'createElement' of undefined
at Object.<anonymous> (/Users/me/projects/myproj/test/test_stuff.js:7:7)
这是什么意思?我正在从&#39;反应&#39;导入React。成功了,为什么React会被定义?它是_react.React,无论那意味着什么......
答案 0 :(得分:109)
要导入React do import React from 'react'
如果要导入的内容不是该模块或文件中的默认导出,则添加括号。如果有反应,它是默认导出。
这可能适用于您的其他导入,具体取决于您的定义方式。
答案 1 :(得分:10)
import React, { Component } from 'react'
这对我有用。不过,我不确定为什么它可以解决此问题。因此,如果您是偶然发现此问题的人,并且使用create-react-app作为您的开始样板,那么这种导入React的方法将可以解决问题。 (截至18年10月,哈哈)
答案 2 :(得分:3)
由于粗心,此错误发生在我身上。其实是
import React from 'react';
括号用于这样的命名出口:
import React, { useState, useEffect } from 'react';
答案 3 :(得分:2)
对于那些使用TypeScript使用ReactJS的人。
import * as React from 'react';
答案 4 :(得分:0)
更改: 从“反应”导入{React} 到从“反应”导入React 由于React是默认导出,因此您不需要大括号即可进行默认导出。
答案 5 :(得分:0)
如果您需要从“反应”中导入多个类,则可以使用它们的别名(React除外)。像
import React, * as react from 'react';
答案 6 :(得分:0)
React
默认情况下在该模块中导出,不需要{}。
答案 7 :(得分:0)
尝试使用析构函数导入 React 对象可能会导致您出现类似 import {React} from 'react';
的问题。
这可能是上面运行此代码 90% 的错误的原因。
而是使用:
import React from 'react';
然后你可以通过以下方式访问 React 类的任何成员: 做出反应。