当前位置: 首页 > 面试题库 >

使用webpack,ES6,ReactJS导入JavaScript文件和调用函数

阮华美
2023-03-14
问题内容

尝试做一些我想会很简单的事情。我想导入一个现有的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';


 类似资料:
  • 问题内容: 我在玩和使用和。我想在不同的文件中构建多个组件,将其导入单个文件并将其捆绑在一起 假设我有几个这样的组件: my-navbar.jsx main-page.jsx 使用webpack并按照其教程进行操作,我有: 构建项目并运行它之后,在浏览器控制台中出现以下错误: 我究竟做错了什么?如何正确导入和导出组件? 问题答案: 尝试 默认设置 组件中的导出: 通过使用默认值,您表示将成为该模块

  • ES6模块语法是否允许您从文件夹导入内容? 例如,如果我有我尝试从导入foo/在

  • 问题内容: 在我正在合作的项目中,关于可以使用哪种模块系统,我们有两个选择: 导入使用的模块,并使用导出和。 使用ES6导入模块,并使用ES6导出 相互使用是否对性能有好处?如果要在Node模块上使用ES6模块,还有其他什么应该知道的吗? 问题答案: 相互使用是否对性能有好处? 请记住,还没有JavaScript引擎本身支持ES6模块。您说自己正在使用Babel。无论如何,Babel都会默认将其转

  • 本文向大家介绍JavaScript ES6箭头函数使用指南,包括了JavaScript ES6箭头函数使用指南的使用技巧和注意事项,需要的朋友参考一下 胖箭头函数(Fat arrow functions),又称箭头函数,是一个来自ECMAScript 2015(又称ES6)的全新特性。有传闻说,箭头函数的语法=>,是受到了CoffeeScript 的影响,并且它与CoffeeScript中的=>语

  • 我正在用JavaScript构建firebase函数。现在我有了很多调用间函数,我计划将这些函数移到不同的文件中,以避免index.js变得非常混乱。 下面是当前的文件结构: 我想知道: 1)如何从internalfunctions.js导出函数并导入到index.js。 已编辑 js将具有多种功能。

  • 我目前正在通过webpack/babel在React应用程序中使用ES6。我使用索引文件收集模块的所有组件并将其导出。不幸的是,这看起来是这样的: 所以我可以很好地从其他地方导入它,比如: 显然,这不是一个很好的解决方案,所以我想知道,是否还有其他方法。我似乎无法直接导出导入的组件。