所以我正在尝试将具有Material Design Lite的现有静态站点移动到React。
我使用Create-React-App包创建一个新的反应应用程序。我运行命令“npm i'paterical-design-lite'--save” - 这两个都有效。
现在,在我的App.JS文件中,我将其导入。
import componentHandler from 'material-design-lite';
class App extends Component {
componentDidMount() {
componentHandler.upgradeAllRegistered();
}
当我这样做时,我收到此错误
TypeError:__ WWEPACK_IMPORTED_MODULE_2_material_design_lite ___ default.a.upgradeAllRegistered不是函数
并且它在线组件抱怨.Handler.upgradeAllRegistered();
事情是这个功能确实存在。我在调试时可以访问它,我也可以在chrome控制台中访问它。
这个错误是什么意思?
答案 0 :(得分:1)
此库未准备好用作es6模块。您的import语句导入一个空对象,因为material-design-lite
不会导出任何内容。
您可以像这样导入模块:
import 'material-design-lite';
这会将componentHandler
对象附加到window
对象。
您可以通过window.componentHandler
访问它。您只需确保在应用程序中的任何位置访问它之前进行导入。