尝试做一些我想会很简单的事情。我想导入一个现有的JavaScript库,然后调用它的函数。因此,例如,我想导入blah.js,然后调用blah()。
import React from 'react';
import {blah} from 'blah/js/blah.js';
class MyClass extends React.Component {
constructor() {
super();
}
componentDidMount() {
window.addEventListener('resize', this.handleResize);
}
componentWillUnmount() {
window.removeEventListener('resize', this.handleResize);
}
handleResize() {
blah.blah();
}
render() {
....
}
}
export default MyClass;
只是想知道要完成这项工作我需要做什么神奇的组合。也许我只是错过了重点。该示例给出错误“ TypeError:_blah.blah未定义”。
命名出口:
假设您创建了一个名为的文件utils.js
,其中包含您希望其他模块(例如React组件)可以使用的实用程序功能。然后,将每个函数命名为export:
export function add(x, y) {
return x + y
}
export function mutiply(x, y) {
return x * y
}
假设utils.js与React组件位于同一目录中,则可以使用如下所示的导出方式:
import { add, multiply } from './utils.js';
...
add(2, 3) // Can be called wherever in your component, and would return 5.
或者,如果愿意,可以将整个模块的内容放在一个通用的名称空间下:
import * as utils from './utils.js';
...
utils.multiply(2,3)
默认出口:
另一方面,如果您的模块仅做一件事情(可以是React类,普通函数,常量或其他任何东西),并且想让其他人使用,则可以使用默认export。假设我们有一个file log.js
,其中只有一个函数可以注销其调用的任何参数:
export default function log(message) {
console.log(message);
}
现在可以这样使用:
import log from './log.js';
...
log('test') // Would print 'test' in the console.
log
导入时不必调用它,实际上可以根据需要调用它:
import logToConsole from './log.js';
...
logToConsole('test') // Would also print 'test' in the console.
合并:
一个模块既可以具有默认导出(最多1个),也可以具有命名导出(一个一个地导入,或*
与别名一起使用)。React实际上有这个,请考虑:
import React, { Component, PropTypes } from 'react';
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句